您的位置:首页 > Web前端 > JavaScript

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位小数
等等。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: