[学习笔记]Javascript采用二进制浮点数和四舍五入的错误

时间:2021-08-18 12:52:26

1.样例

var a = .3 - .2 //0.09999999999999998
var b = .2 - .1 //0.1
a == b //false

出现这样的原因在于

1.Javascript采用IEEE-754浮点数表示法(几乎所有现代编程语言所采用),这事一种二进制表示法,可以精确地表示1/2, 1/8,1/1024的值,而我们常用十进制的分数1//10,1/100

2.实现有无数个,但是Javascript通过浮点数的形式只能表示其中有限的个数(确切说是18437736874454810627个,2^64 = 18446744073709551616),即Javascript中使用实数的时候,常常只是真实值的一个近似表示。