加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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十亿分之一,即非常多),所以它确实是正确的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读