C# – Int操作莫名其妙地返回负值
发布时间:2020-12-16 00:08:43 所属栏目:百科 来源:网络整理
导读:操作如下: public float InfectionPercent(){ return (infected + zombies) * 100 / population;} 价值观是: int infected = 20196093int zombies = 1978138int population = 32608521 返回的值是-63 将100改为100f可以解决这个问题. 为什么该操作返回-63
操作如下:
public float InfectionPercent() { return (infected + zombies) * 100 / population; } 价值观是: int infected = 20196093 int zombies = 1978138 int population = 32608521 返回的值是-63 将100改为100f可以解决这个问题. 为什么该操作返回-63而不是63? 解决方法20196093 + 1978138 = 22174231 22174231 * 100 = 2 217 423 100 但是,Int.MaxValue是2 147 483 647,所以你破坏了最大值. 通过将100设置为浮点数,您将强制浮点乘法.有效浮点值介于-3.4×10 ^ 38和3.4×10 ^ 38之间(这是340十亿分之一,即非常多),所以它确实是正确的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |