由于ECMAScript使用基于IEEE754数值的浮点计算方法(本人也不明白这是什么鬼,大概知道一下就好了),有时在做加减计算时会出现如下问题。
实例:
输入一下代码:
<script>
var a = 1.1;
var b = 1.4;
alert(a+b);
</script>
浏览器会弹出以下结果(有时):
但是比如输入一下代码时:
<script>
var a = 1.2;
var b = 1.4;
alert(a+b);
</script>
浏览器会弹出以下结果(有时):
因此不建议判断浮点数值加减的值,比如:
var a = 0.1,
b = 0.2;
if(a+b == 0.3){
alert("You got 0.3.");
}
比如:
var a = 20.89,
b = 18.95;
alert(a-b);
计算结果是:1.9400000000000013
解决方法一:
alert((a*100-b*100)/100);
解决方法二:
alert(parseFloat(a-b).toFixed(2));
parseFloat(a-b):意为a-b的值取小数
toFixed(2):意为保留两位小数