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位小数
等等。。。。。