C# – Int *** 作莫名其妙地返回负值

C# – Int *** 作莫名其妙地返回负值,第1张

概述 *** 作如下: public float InfectionPercent(){ return (infected + zombies) * 100 / population;} 价值观是: int infected = 20196093int zombies = 1978138int population = 32608521 返回的值是-63 将100改为100f可以解决这个问题. *** 作如下:

public float InfectionPercent(){    return (infected + zombIEs) * 100 / population;}

价值观是:

int infected = 20196093int zombIEs = 1978138int population = 32608521

返回的值是-63

将100改为100f可以解决这个问题.

为什么该 *** 作返回-63而不是63?

解决方法
20196093 + 1978138 = 2217423122174231 * 100 = 2 217 423 100

但是,Int.MaxValue是2 147 483 647,所以你破坏了最大值.

通过将100设置为浮点数,您将强制浮点乘法.有效浮点值介于-3.4×10 ^ 38和3.4×10 ^ 38之间(这是340十亿分之一,即非常多),所以它确实是正确的.

总结

以上是内存溢出为你收集整理的C# – Int *** 作莫名其妙地返回负值全部内容,希望文章能够帮你解决C# – Int *** 作莫名其妙地返回负值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1222567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存