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

问题描述 投票:1回答:1

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

我的C#代码为:

age = int.Parse(Console.ReadLine());
double result1 = age *3.156e7;
int result2 = age * 31560000;
c#
1个回答
6
投票

int最大值为2,147,483,647和128 * 31560000 = 4039680000比INT最大值时,你会得到一个整数溢出

而且年龄* 31560000输出int其中他的最大值也如上

如果你没关系

int = age * 31560000

要么

long = age * 31560000

(在这里你期待,你认为得到的结果,但你会得到仍然得到溢出,因为编译器首先计算多个结果,然后将其插入结果)

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

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

因为编译器会在这里根据其较高的格式和行为

© www.soinside.com 2019 - 2024. All rights reserved.