众所周知decimal fractions
(如 0.1),当存储为floating point
(如 double 或 float)时,将在内部以“二进制格式”(IEEE 754)表示。并且有些小数部分不能直接用二进制格式表示。
我不明白的是这种“转换”的精确度:
1.)浮点本身可以具有精度(即“显着”)?
2.) 而且从十进制小数到二进制小数的转换也会有精度损失?
问题:
从小数转换为浮点小数时,最坏情况下的精度损失是多少(对于“所有”可能的小数)?
(我想知道这一点的原因是,在将小数与二进制/浮点分数进行比较时,我需要考虑精度......以确定两个数字是否相同。我希望这个精度尽可能精确/精确尽可能(decimal fraction == binary fraction +/- precision)
示例(仅假设)
0,1 dec => 0,10000001212121212121212 (binary fraction double) => precision loss 0,00000001212121212121212
0,3 dec => 0,300000282828282 (binary fraction double) => precision loss 0,000000282828282