猿问

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

我写了这个代码,但有时相同的输入不会给我相同的输出。例如,输入 128 或 97。


我的 C# 代码是:


age = int.Parse(Console.ReadLine());

double result1 = age *3.156e7;

int result2 = age * 31560000;


莫回无
浏览 89回答 1
1回答

繁星淼淼

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);因为编译器在这里寻找更高的格式并根据其操作
随时随地看视频慕课网APP
我要回答