gpt4 book ai didi

c++ - 你能给我一个 16 位(或更多)十进制数,它只在第 15 位正确转换为 double float 吗?

转载 作者:太空狗 更新时间:2023-10-29 20:20:54 27 4
gpt4 key购买 nike

对于单精度,最小位数保证为6

9999978e39999979e3 都会“收敛”到 9999978496。因此,无论我将使用什么小数,6 数字始终由单精度 float 学保证(至少对于 IEEE 754)。

我认为同样适用于 double ,但最小值应为 15。我找不到一个十进制数来证明这一点,就像上面使用单精度的那样。

可以给我一份吗?或者您将如何取回它?

最佳答案

两者都是 90071992547409929007199254740993是 16 位数字,并且都具有值 9007199254740992当存储为 IEEE754 double 时。

9007199254740993的第16位是个笑话。

我选择这个例子背后的灵感是 9007199254740992是 2 的 54 次方,紧接在 IEEE754 double 类型的有效数字中的位数之后,第一个十进制数字恰好是 9 .因此,尽管只有 16 位数字,但上面的奇数都不可表示!


坚持 IEEE754 double ,如果你想要一个 0 到 1 范围内的例子,那么从二元有理数 0.75 开始并添加订单值 1e-16 .很快,您会偶然发现 0.75000000000000050.7500000000000006 , 它们都是 0.75000000000000055511151231257827021181583404541015625

关于c++ - 你能给我一个 16 位(或更多)十进制数,它只在第 15 位正确转换为 double float 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47156067/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com