js加减法运算多出很多小数点
2024-10-20 16:48:17
链接: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); 这两种写法计算机在底层转换成二进制运算是有区别的,或许这就是出现上述问题的原因,还有待我们去深入研究,大家可以多多讨论。
最新文章
- 【快速选择算法与nth_element函数】【续UVA11300 】
- ThinkPHP第二十一天(JQuery元素获取,parents属性,toggle方法,确认弹出对话框使用)
- js超简单日历
- java.util.zip - Recreating directory structure(转)
- 在Pythonanywhere上部署Django
- Docker私有仓库Registry 搭建
- EDP转换IC NCS8801S:RGB/LVDS转EDP芯片
- TCP三次握手与四次分手
- 【实验手册】使用Visual Studio Code 开发.NET Core应用程序
- javascript 特殊的面向对象以及继承详解(入门篇)
- printf(";Hello 2018!";);
- 程序中编写log日志
- 关于DatePicker在模态窗体下失效的问题
- 使用sklearn估计器构建K-Means聚类模型
- mysql常用操作小节
- bootstrap-table方法之:合并单元格
- C#作为客户端调用gsoap生成的C++服务端
- Learning-Python【20】:Python常用模块(3)—— shelve、pickle、json、xml、configparser
- # 2019-2020.3 《java程序设计》第一周学习总结
- SQL Server的一些小问题
热门文章
- awk、sed、grep三大shell文本处理工具之awk的应用
- gitlab搭建与配置说明
- 搬进Github
- 自学工业控制网络之路1.5-典型的现场总线介绍DeviceNet
- [luogu3978][bzoj4001][TJOI2005]概率论【基尔霍夫矩阵+卡特兰数】
- LOJ [#115. 无源汇有上下界可行流](https://loj.ac/problem/115)
- 使用fiddler模拟http请求
- intent-filter 之 data 「scheme, host, port, mimeType, path, pathPrefix, pathPattern」
- FFMEPG -- A ffmpeg and SDL Tutorial : tutorial05
- A1073. Scientific Notation