http://i13.tietuku.com/7b11748d1d3f7b41.png
在 javascript 里面 1%0.1=0.09999999999999995???不懂。
新人求教,谢谢。
1
blahgeek 2015-10-10 22:02:33 +08:00 via iPhone
因为这是 javascript (逃🙈
|
2
CRVV 2015-10-10 22:07:43 +08:00 3
怎么老有人问这个问题
这和 Javascript 没有关系... 因为 > (0.1).toPrecision(21) '0.100000000000000005551' 这个东西的原因,是二进制有限小数和十进制有限小数能表示的数字不是同一个集合 0.1 不能用有限二进制小数准确表示 比如三进制的 0.1 ,用十进制表示是 0.333333333...,一个道理 |
6
YuJianrong 2015-10-10 22:14:01 +08:00
因为 JS 里的 number 就是 C/Java 的 double 。
(不要提位运算,那是特例。 |
7
just1 OP 于是取余数要这样子吗
9-Math.floor(9/4)*4 |
9
YuJianrong 2015-10-10 22:51:19 +08:00
@just1 取余操作本来就应该仅针对两个整数操作,很多语言里根本就不能对浮点数取余, JS 能为浮点取余只是为了让 API 看起来更合理而已。
|
10
just1 OP |
11
msg7086 2015-10-11 14:22:22 +08:00
0.1 在二进制里是个无限小数,无法精确表示。
|
12
johnnyb 2015-10-11 16:08:40 +08:00 1
|
13
lincanbin 2015-10-11 17:45:43 +08:00 via Android
IEEE754
|