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

时间:2019-02-03 08:49:37

标签: c#

我写了这段代码,但有时相同的输入并不能提供相同的输出。例如,输入128或97。

我的C#代码是:

age = int.Parse(Console.ReadLine());
double result1 = age *3.156e7;
int result2 = age * 31560000;

1 个答案:

答案 0 :(得分:6)

int的最大值是2,147,483,647和128 * 31560000 = 4,039,680,000,它大于int的最大值,您将得到一个Integer溢出

而且年龄* 31560000也会输出int,其最大值也与上面相同

不要紧

int = age * 31560000

long = age * 31560000

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

要解决此问题,您可以执行以下操作

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

因为编译器在此处查找更高格式并按照其操作