链接:http://www.jb51.net/article/73043.htm

解决方法:
解决这种问题两种方法,第一种就是利用JavaScript 的toFixed(n) 方法,直接获取N 位小数,不过,个人觉得这种方法在数据精度上会有一些问题。如果数据精度要求不高的话可以使用。

1
alert((0.1 + 0.2).toFixed(1));

第二种方法就是自己编写运算方法。以下是自定义加法函数,使用此方法进行相加会避免上面问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//自定义加法运算
function addNum (num1, num2) {
 var sq1,sq2,m;
 try {
  sq1 = num1.toString().split(".")[1].length;
 }
 catch (e) {
  sq1 = 0;
 }
 try {
  sq2 = num2.toString().split(".")[1].length;
 }
 catch (e) {
  sq2 = 0;
 }
 m = Math.pow(10,Math.max(sq1, sq2));
 return (num1 * m + num2 * m) / m;
}
alert(addNum(0.1, 0.2));

当然,简单一点也可以写成:alert((num * 3 + 10 * 3) /3); 这样也不会出现 N 多位小数。
alert((num * 3 + 10 * 3) /3); 与 alert(num + 10); 这两种写法计算机在底层转换成二进制运算是有区别的,或许这就是出现上述问题的原因,还有待我们去深入研究,大家可以多多讨论。

最新文章

  1. 【快速选择算法与nth_element函数】【续UVA11300 】
  2. ThinkPHP第二十一天(JQuery元素获取,parents属性,toggle方法,确认弹出对话框使用)
  3. js超简单日历
  4. java.util.zip - Recreating directory structure(转)
  5. 在Pythonanywhere上部署Django
  6. Docker私有仓库Registry 搭建
  7. EDP转换IC NCS8801S:RGB/LVDS转EDP芯片
  8. TCP三次握手与四次分手
  9. 【实验手册】使用Visual Studio Code 开发.NET Core应用程序
  10. javascript 特殊的面向对象以及继承详解(入门篇)
  11. printf("Hello 2018!");
  12. 程序中编写log日志
  13. 关于DatePicker在模态窗体下失效的问题
  14. 使用sklearn估计器构建K-Means聚类模型
  15. mysql常用操作小节
  16. bootstrap-table方法之:合并单元格
  17. C#作为客户端调用gsoap生成的C++服务端
  18. Learning-Python【20】:Python常用模块(3)—— shelve、pickle、json、xml、configparser
  19. # 2019-2020.3 《java程序设计》第一周学习总结
  20. SQL Server的一些小问题

热门文章

  1. awk、sed、grep三大shell文本处理工具之awk的应用
  2. gitlab搭建与配置说明
  3. 搬进Github
  4. 自学工业控制网络之路1.5-典型的现场总线介绍DeviceNet
  5. [luogu3978][bzoj4001][TJOI2005]概率论【基尔霍夫矩阵+卡特兰数】
  6. LOJ [#115. 无源汇有上下界可行流](https://loj.ac/problem/115)
  7. 使用fiddler模拟http请求
  8. intent-filter 之 data 「scheme, host, port, mimeType, path, pathPrefix, pathPattern」
  9. FFMEPG -- A ffmpeg and SDL Tutorial : tutorial05
  10. A1073. Scientific Notation