相关JS的有关问题,哪位大神能帮忙解决一下,在下不胜感激
相关JS的问题,哪位大神能帮忙解决一下,在下不胜感激。
现在我发现一个奇葩的问题
在JS中 我有10000乘以0.69
计算出来的结果尽然是6899.99999999999
然而 用后台计算出的结果是6900
谁能知道这是为什么?
怎么才能使计算的结果是6900
而且我做了一个尝试
如果0.69*1000 那么这个计算的结果是690
但是如果0.69*10000 这个结果就是6899.99999999999
求大神帮忙
------解决思路----------------------
我试了下,确实如此。但是0.69 * 1000 * 10 结果又是6900 不知道为什么
------解决思路----------------------
PS:好像就只有乘以10000时会这样,其他都不会
------解决思路----------------------
JS是弱类型的语言,不知道它默认把0.69和10000都给转成什么类型,导致计算出现精度缺失
------解决思路----------------------
解决问题的大概思路就是,先把因数放大为整数,最后再除以相应的倍数,这样就能得到正确的结果了。
其实这种方式不完全正确,虽说可以解决一部分小数的乘法问题,但是还是有特例的,比如按照这种解决思路的话,小数点后面有几位小数必须扩大10的多少次方倍,如果这个值是个动态的,岂不是显得很繁琐。
下面给出万能解决方式。
<script> alert(parseFloat(10000.005*10000).toFixed(2));
//结果是10000005.00
</script>
------解决思路----------------------
浮点数的精度损失
------解决思路----------------------
至于为什么嘛,上面有人都说过了
看看这个
------解决思路----------------------
这是由于浮点精度问题引起的,对于javascript这种弱类型来说是很正常的,其实我们在实际开发中,计算一般不建议使用js直接计算,你可以通过ajax在后台计算好,在传到前台进行显示,这样做的目的也是考虑了安全的因素。
------解决思路----------------------
问题解决了多少?
反正下午下班时候记得去找找我的快递就行
现在我发现一个奇葩的问题
在JS中 我有10000乘以0.69
计算出来的结果尽然是6899.99999999999
然而 用后台计算出的结果是6900
谁能知道这是为什么?
怎么才能使计算的结果是6900
而且我做了一个尝试
如果0.69*1000 那么这个计算的结果是690
但是如果0.69*10000 这个结果就是6899.99999999999
求大神帮忙
------解决思路----------------------
我试了下,确实如此。但是0.69 * 1000 * 10 结果又是6900 不知道为什么
------解决思路----------------------
PS:好像就只有乘以10000时会这样,其他都不会
------解决思路----------------------
JS是弱类型的语言,不知道它默认把0.69和10000都给转成什么类型,导致计算出现精度缺失
------解决思路----------------------
<script>alert(11*(22.9*10)/10);</script>
解决问题的大概思路就是,先把因数放大为整数,最后再除以相应的倍数,这样就能得到正确的结果了。
其实这种方式不完全正确,虽说可以解决一部分小数的乘法问题,但是还是有特例的,比如按照这种解决思路的话,小数点后面有几位小数必须扩大10的多少次方倍,如果这个值是个动态的,岂不是显得很繁琐。
下面给出万能解决方式。
<script> alert(parseFloat(10000.005*10000).toFixed(2));
//结果是10000005.00
</script>
------解决思路----------------------
浮点数的精度损失
------解决思路----------------------
至于为什么嘛,上面有人都说过了
看看这个
------解决思路----------------------
这是由于浮点精度问题引起的,对于javascript这种弱类型来说是很正常的,其实我们在实际开发中,计算一般不建议使用js直接计算,你可以通过ajax在后台计算好,在传到前台进行显示,这样做的目的也是考虑了安全的因素。
------解决思路----------------------
问题解决了多少?
反正下午下班时候记得去找找我的快递就行