我想使用C#将大于int32最大范围的大数转换为int32。所以如果它超过最大范围2147483647,那么它将从-2147483648再次开始。现在我这样做是这样的:将Int32.Maximum +数值转换为int32
long val = 3903086636L;
long rem = val % 2147483648L;
long div = val/2147483648L;
int result = div % 2 == 0 ? (int)rem - 1 : -2147483648 + (int)rem;
我不确定,如果我这样做是正确的。是否有任何实用功能或快速的方式来在C#中做到这一点?
如果我禁用检查模式,会影响我的应用程序吗? – Arnab
默认情况下,它被禁用,所以没有。 –
或者你可以编写'int i = unchecked((int)val);',无论编译器的checked选项如何,它都可以工作。 –