c++ - C++ 中的 double 字

标签 c++ floating-point range

尽管内部表示有 17 位,但 IEE754(64 位) float 应该正确表示 15 位有效数字。有没有办法强制第 16 位和第 17 位数字为零??

引用: http://msdn.microsoft.com/en-us/library/system.double(VS.80).aspx : . .

请记住, float 只能逼近十进制数,而 float 的精度决定了该数字逼近十进制数的准确程度。默认情况下,Double 值包含 15 个十进制数字的精度,但内部保留了最多 17 个数字。 float 的精度有几个后果: . .

示例编号: d1 = 97842111437.390091
d2 = 97842111437.390076
d1 和 d2 在小数点后第 16 位和第 17 位不同,这不应该是重要的。寻找将它们强制归零的方法。 IE d1 = 97842111437.390000 d2 = 97842111437.390000

最佳答案

没有。反例:最接近有理数的两个 float

1.11111111111118

(有 15 位十进制数字)是

1.1111111111111799942818834097124636173248291015625
1.1111111111111802163264883347437717020511627197265625

也就是说,不存在以1.1111111111111800开头的 float 。

关于c++ - C++ 中的 double 字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1521194/

相关文章:

c++ 异常未被 catch 捕获(异常类型)

c++ - 如何从函数编辑对象的数据?

c++ - Lua C++ 用户数据矩阵访问元素

c++ - 是否有要求 float 而不是 double 的 printf 说明符?

python - 使用 numpy.int32 时的浮点近似值

input - XY 图的用户输入范围

python - 内置范围或 numpy.arange : which is more efficient?

Excel VBA 函数根据范围内的单元格背景颜色返回 True 或 False

java - 如何在java中将字符串解析为具有三位小数的 float

floating-point - OpenCL 归约中 min() 和 max() 的中性元素