为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在乘以非常大的数字时没有得到正确的结果?

为什么在乘以非常大的数字时没有得到正确的结果?

C#
莫回无 2022-08-20 17:38:12
我写了这个代码,但有时相同的输入不会给我相同的输出。例如,输入 128 或 97。我的 C# 代码是:age = int.Parse(Console.ReadLine());double result1 = age *3.156e7;int result2 = age * 31560000;
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

int最大值为 2,147,483,647 和 128 * 31560000 = 4,039,680,000,大于 int 最大值,您将获得整数溢出

但年龄 * 31560000 输出一个,其最大值也如上int

如果你这样做并不重要

int = age * 31560000

long = age * 31560000

(在这里,您希望获得您想象中的结果,但您仍然会得到溢出,因为编译器首先计算多个结果,然后将其插入到结果中)

要解决这个问题,你可以做这样的事情

long result2 = age * Convert.ToInt64(31560000);

因为编译器在这里寻找更高的格式并根据其操作


查看完整回答
反对 回复 2022-08-20
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号