gpt4 book ai didi

c# - 带 float 的无限循环

转载 作者:行者123 更新时间:2023-11-30 13:21:52 25 4
gpt4 key购买 nike

考虑以下代码:

for (float i = 0f; i < int.MaxValue; i++)
{
// Some code
}

它应该从 0 循环到 int.MaxValue (231-1),但它没有。一旦 i 达到 224i++ 就不再工作了,原因我完全无法理解。

在 VS 的即时窗口中,我试过这个:

>i
16777216.0
>i + 1
16777216.0 // ???
>i == i + 1
false // as expected, but a lack of consistency with upper statement
>i + 2
16777218.0

为什么会这样? 224+1 有什么特别之处?

最佳答案

这是因为浮点精度。它基于 IEEE 浮点运算标准 (IEEE 754)。阅读它以了解 float 的工作原理。

简单来说,当一个 float 本身存储一个大值时;当前存储的数字与它可以存储的下一个数字之间的差大于 1,因此向其加 1 不会增加它的值。

如果您需要精确的十进制数,请使用 decimal相反。
如果您需要大于 int 的整数值,请使用 long .
如果您需要非常大的整数值,请使用 BigInteger .

关于c# - 带 float 的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36444413/

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