JavaScript小数运算出现多位的解决办法


在开发JS过程中,会经常遇到两个小数相运算的情况,但是运算结果却与预期不同,调试一下发现计算结果竟然有那么长一串尾巴。

先看几个例子,在Chrome控制台测试结果如下:

产生原因:

JavaScript对小数运算会先转成二进制,运算完毕再转回十进制,过程中会有丢失,不过不是所有的小数间运算会有这个问题。

解决办法:

一、先把需要运算的小数扩大成整数,运算后在缩小相同倍数。

例如:0.1+0.2  写成 (0.1*10+0.2*10)/10    结果:0.3
注意:type 为 number
  • 1
  • 2

二、使用toFixed()

例如:var a = 0.1+0.2  写成 a.toFixed(1)     结果:"0.3"a.toFixed(2)    结果:"0.30"
注意:type 为 string
  • 1
  • 2
  • 3

两种解决方案得到的结果类型不同,第二种会强制保留n位,根据实际需要选择。

JavaScript小数运算出现多位的解决办法相关推荐

  1. PhpCms V9 调用栏目推荐位的解决办法

    PhpCms V9 调用栏目推荐位的解决办法 http://www.veryhuo.com 2011-05-09 烈火学院 投递稿件 我有话说 PhpCms V9 调用栏目推荐位的解决办法 在栏目页/ ...

  2. JavaScript中的onunload不能用的解决办法

    JavaScript中的onunload不能用的解决办法决办法 原文地址:JavaScript中的onunload不能用的解决办法 今天学习JavaScript中的onunload事件,然后自己开始试 ...

  3. 无法安装64位office,因为已有32位版本……解决办法

    无法安装64位版本的Office,因为在您的PC上找到了以下32位程序,请卸载所有32位Office程序,然后重试安装64位Office.如果要安装32位Office,请运行32位安装程序" ...

  4. Javascript中this指向丢失原因及解决办法详解

    大家都知道JS中的this关键字通常出现在函数或者方法中,用来指向调用该函数或者方法的对象.但是在很多时候this的指向却并不总是如我们所愿,这一篇文章就一起来看看到底该如何判断this所指向的对象, ...

  5. PLSQL developer 连接不上64位Oracle 解决办法

    在64位Windows2003上安装Oracle后,用PLSQL developer去连接数据库出现报错: Could not load "--\bin\oci.dll" OCID ...

  6. “RuntimeWarning: overflow encountered in ubyte_scalars像素加减运算溢出异常”原因以及解决办法

    转载本文请注明详细地址 本文介绍了像素点相加减溢出的原因与解决方法 目录 原因: 解决方法: 原因: 这个问题一般是会出现在图像处理像素的加减中,出现的原因是因为图片的像素一般是八位即最大值是256, ...

  7. 前端js多个小数相加出现无限循环小数的解决办法

    做项目的时候,发现多个小数相加值明明是100,但js 函数计算后确实99.9999,无限循环小数.恰好在前端大全的公众号上看到了一篇文章解释了这个问题,如下图: 文章链接:https://mp.wei ...

  8. JavaScript节流函数, 防止大量函数触发解决办法

    理由 有时候开发者会需要注册一些回调函数在浏览器的scroll和resize事件上, 但是scroll和resize这类事件触发非常频繁, 而实际用户并不需要感知这么多的事件产生, 造成大量函数触发, ...

  9. 安装office2013 64位版本 出错解决办法

    今天在开始安装Office2013时总是提示安装出错,并且显示错误为"无法安装64位版本的Office,因为在您的PC上找到了以下32位程序",查看了一下,原来是曾经安装过32位的 ...

  10. 0xc000007b——应用程序无法正常启动解决办法

    问题 vs2013 写的一个64位的exe程序(Qt+OSG项目),debug后带着来自系统目录C:\Windows\SysWOW64\msvcr120d.dll 到一个没有runtime的win10 ...

最新文章

  1. 从头理解self-attention机制
  2. python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)
  3. 读文献先读图——主成分分析 PCA 图
  4. opencv图片全景拼接详解
  5. Linux环境编程 哈希链表结构 hlist 介绍与用例
  6. Mysql字符串截取 mysql将字符串字段转为数字排序或比大小
  7. 如何允许用户自定义UI
  8. oracle中的判断大小,sql语句判断大小
  9. synchronized原理_浅谈synchronized的实现原理
  10. Ceph使用块设备完整操作流程
  11. vue仿微博评论回复_Vue之 3.0升级
  12. python调用perl_文本处理,用perl 还是python?
  13. 一个简单实用的boost升压电路
  14. graphpad prism柱状图横坐标斜着_GraphPad Prism 绘图教程 | 如何在图表中对齐对象
  15. 关于ExtJS错误“例外被抛出且未被接住”问题
  16. Springboot毕设项目会议预约系统设计与实现3if68(java+VUE+Mybatis+Maven+Mysql)
  17. xy坐标转换为极坐标_认识工程测量坐标系练习例题
  18. U盘中病毒,文件夹变成exe文件
  19. 宿主机无法访问虚拟机web服务器,宿主机无法访问虚拟机中的docker容器怎么办_网站服务器运行维护,宿主机,虚拟机,docker...
  20. 伊滨区应急管理局领导莅临埃思特考察指导

热门文章

  1. javascript拾遗
  2. HDU 1210 Eddy's 洗牌问题(foj1062) || FOJ1050 Number lengths水
  3. oracle性能检测sql语句
  4. 「小程序JAVA实战」小程序页面的上拉下拉刷新(50)
  5. 智能时代 什么样的家庭安防系统更靠谱?
  6. 常用的C语言库函数实现
  7. 使用分区表fstab永久挂载磁盘分区
  8. centos6.5下编译安装mariadb-10.0.20
  9. (Ios 实战) 自定义UITableView
  10. 1、XML 简介,2、JSON 教程