JavaScript不支持精确的浮点数运算?

时间:2023-01-08 09:54:35
请看以下代码:(JavaScript,IE6.0)
var i = 5.1; //6.1,7.1也可
var j = 0.1;
var s = i + j;

经以上运算,S 的值为5.19999999999999;而不是5.2;
但若 i 取值为8.1,则 S 的值正常,为8.2;我另取了一些不同的浮点数进行相加,
最终结果有的正常,有的则不正常。看不出有什么规律性。
请问这究竟是JavaScript不支持精确的浮点数运算,还是进行浮点数运算需做什么特殊措施?
请各位知因者不吝指教。多谢!
EMAIL:cms2037@yahoo.com.cn

2 个解决方案

#1


你必须先转换成整数再进运算

#2


<script>
alert(qswhAdd(5.1,0.1))
function qswhAdd(n1,n2){
var r1,r2,m;
try{r1=n1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=n2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
return (n1*m+n2*m)/m
}
</script>

#1


你必须先转换成整数再进运算

#2


<script>
alert(qswhAdd(5.1,0.1))
function qswhAdd(n1,n2){
var r1,r2,m;
try{r1=n1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=n2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
return (n1*m+n2*m)/m
}
</script>