我写了这段代码,但有时相同的输入并不能提供相同的输出。例如,输入128或97。
我的C#代码是:
age = int.Parse(Console.ReadLine());
double result1 = age *3.156e7;
int result2 = age * 31560000;
答案 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);
因为编译器在此处查找更高格式并按照其操作