我想使用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選項如何,它都可以工作。 –