鍍金池/ 問答/HTML/ JS小數(shù)精度問題

JS小數(shù)精度問題

var two   = 0.2
var one   = 0.1
var eight = 0.8
var six   = 0.6
[two - one == one, eight - six == two]

結(jié)果是true, false

clipboard.png

為什么two - one == onetrue?
為什么 0.2-0.1=0.1沒有精度問題?

回答
編輯回答
心癌

0.2 - 0.1 == 0.1 0.8 - 0.6 == 0.20000000000000007
js精度肯定有問題 浮點(diǎn)嘛 懂得自然懂

2017年1月24日 02:54
編輯回答
編輯回答
眼雜

你可以看下我的這篇文章:
浮點(diǎn)數(shù)計算坑人的原理
文章節(jié)選的一部分:
大家都知道計算機(jī)要用二進(jìn)制表示,基本的十進(jìn)制和二進(jìn)制的換算應(yīng)該都清楚。例如:
0.5(十進(jìn)制) = 0.1(二進(jìn)制),因?yàn)?^-1是0.5。
0.25(十進(jìn)制) = 0.01(二進(jìn)制),因?yàn)?^-2是0.25。
那0.2呢,怎么表示呢,表示不出來啊。那就只能找個最接近的近似值來代表。
所以0.2的二進(jìn)制小數(shù)是0.0011001100110011.......,也就是(2^-3)+(2^-4)+(2^-7)+(2^-8)+.....

2018年7月21日 12:13