0.1 + 0.2 为什么得出来的是 一个大于 0.3 的数,而不是 一个小于 0.3 的数?
( 0.1 + 0.2 = 0.30000000000000004 )
1
AngelCriss 2018-04-21 22:25:27 +08:00 via Android
0.1 + 0.2 不等于 0.3 ?难道我小学数学老师原本是教体育的?
|
2
KenroHoro 2018-04-21 22:26:09 +08:00
IEEE754
|
3
wdd2007 2018-04-21 22:34:22 +08:00
浮点数比较无意义
|
4
jingous 2018-04-21 22:36:37 +08:00
把两个小数转化为二进制加一下看看
|
6
flowfire 2018-04-21 22:37:57 +08:00 via iPhone
。。。。四舍和五入都属于精度丢失
|
7
lance6716 2018-04-21 22:46:07 +08:00 via Android
IEEE754
|
8
Shura 2018-04-21 22:52:29 +08:00 1
@silver107 因为舍入处理的时候,可以将尾数的最低位设定为 1(尾数恒置 1)。所以浮点数进行舍入处理之后反而会增大。
|
9
bkmi 2018-04-21 22:57:54 +08:00 via Android
去搜搜计算机中浮点数的表示方法…
|
10
q8515620 2018-04-21 22:59:15 +08:00 via Android
我是认为,精度丢失不是数值上的丢失。
精度指的是精确度(或者说是误差?) |
11
jingous 2018-04-22 00:02:39 +08:00 1
所谓的精度损失并不是每次都变小。
精度损失体现在两个方面:一是原始的表示不精确,二是就算过程阶码较小的元素为丢位 然后,花费半个多小时推导了过程,仅供参考: https://pan.baidu.com/s/1XA145TEiMo2b3GgL7HkOiQ |
13
rabbbit 2018-04-22 02:06:30 +08:00 3
|
14
rabbbit 2018-04-22 02:12:52 +08:00 2
至于为啥多出来个.000004
因为超过 52 为会自动进一舍零 0.0001100110011001100110011001100110011001100110011001100 变成了 0.0001100110011001100110011001100110011001100110011001101 要是算 |
15
rabbbit 2018-04-22 02:14:54 +08:00 2
convert('0.0100110011001100110011001100110011001100110011001100110', 2)
结果是 0.3 |