js 中Math.round()精度问题?急

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 中Math.round()精度问题?急相关的知识,希望对你有一定的参考价值。

在下面的代码中,如果输入7位(0.0000007)及7位以上的(0.00000008)小数(即小数最后一位不是0其它位数都是0)时,返回的值就会变成科学计数法,请教这是个什么问题?该怎么解决 ?谢谢! <script type="text/javascript"> function _round() var v =document.getElementById("testValue").value ; var splitStr = v.split("."); var xs = splitStr[1]; var e = -1 ; if(e == -1) if(xs!=null) e = xs.length; else e = 0; var t = 1; for (; e > 0; t *= 10, e--); for (; e < 0; t /= 10, e++); var finalValue = Math.round(v * t) / t ; alert(finalValue) ; ; </script> </head> <body> <input type="text" id="testValue" value=""> <input type="button" value="测试" onClick="_round()"> </body>

参考技术A 不是BUG,最简单的alert(0.56*100);。JavaScript小数在做四则运算时,精度会丢失。
具体可参考IEEE
754的浮点计数法

以上是关于js 中Math.round()精度问题?急的主要内容,如果未能解决你的问题,请参考以下文章

通过Math.round来获得指定精度整数或小数的

JS 四舍五入保留两位小数

如何把一个 float 类型的数据转换为 int 类型

C#将数字四舍五入为双精度数的任意数字[重复]

设置双精度点后的位数

java中"(double)(Math.round(x3 * 10000))/10000"为啥这个东西会输出小数啊?