javascript数值计算得注意精度问题
2012-09-28 11:11
405 查看
javascript 数值运算精度
使用javascript进行数值运算的时候要格外小心和注意,因为javas的浮点数的精度问题很严重,比如44444.1+4.2的值并不是想象中的44448.2,而是44448.299999999995 ,同样对于乘法也是有很大的问题,如55.7*12的值不是668.4,而是668.4000000000001 ;如果学了一些其他语言如C/C++,Java的都知道,虽然也存在浮点数精度的问题,但是对于这种比较简单的计算,他们还是能够应付自如的,不会出现这样的错误,所以说在javascript上对于一些小数的计算问题上还是得多注意,以免出现不知所谓的计算错误。以为自己尝试的一些列子:
<html> <head> <title>js测试用例</title> </head> <body > <script type="text/javascript"> var c = 4444.1; var d = 4.2; var e = c + d; document.write(e.toFixed(1) + " || ");//这个值是正确的4448.3 var a = 44444.1; var b = 4.2; document.write(a + b + " || "); //这个值就错误了,变为44448.299999999995 var f = 55.7; var g = 12; document.write(f * g); //这个值就错误了,变为668.4000000000001 </script> </body> </html>
对于这些问题,在自己可以预知结果的情况下,可以试用一下数学函数进行一些修正,如
1、四舍五入函数,
Math.round()2、取小于或等于值a的最接近整数函数
Math.floor(a)3、取大于或等于值a的最小整数函数
Math.ceil()4、使用数值对象自身的方法,
e.toFixed(n)//e为数值,n为保留小数位数,方法为保留n位小数等等。。。。。
相关文章推荐
- 关于JavaScript中计算精度丢失的问题
- Java中不同数值类型间转换与计算精度丢失问题
- 数值计算中的精度问题
- c# 数值计算精度问题
- Java中不同数值类型间转换与计算精度丢失问题
- double float 类型的数据(小数)在作计算的时候,需要注意的。(Java和JavaScript)都有这问题
- 关于JavaScript中计算精度丢失的问题
- Java数值避免浮点型计算丢失精度问题
- JavaScript小数计算精度丢失问题解决方案
- javascript中对数值计算控制精度的函数
- Java中数值计算的精度问题
- java中数值计算的精度问题
- 关于JavaScript中计算精度丢失的问题(一)
- 浮点数计算注意精度问题
- 关于JavaScript中计算精度丢失的问题(二)
- 关于JavaScript中计算精度丢失的问题
- JavaScript计算精度问题解决方案
- 数值计算精度问题(double,float,Bigdecimal)
- 测试数值计算程序要注意的问题
- JavaScript中需要注意的几个问题