Int32 maksimum aralığından daha büyük olan büyük bir sayıyı C# kullanarak int32'ye dönüştürmek istiyorum. Böylece, 2147483647 maksimum aralığından fazla ise, o zaman tekrar -2147483648'den başlayacaktır. Şimdilik bunu şu şekilde yapıyorum:Int32.Maximum + değerli sayıyı int32'ye dönüştürme
long val = 3903086636L;
long rem = val % 2147483648L;
long div = val/2147483648L;
int result = div % 2 == 0 ? (int)rem - 1 : -2147483648 + (int)rem;
Bunu doğru yaptığımda emin değilim. C# içinde bunu yapmak için herhangi bir yardımcı işlev veya hızlı yolu var mı?
İşaretli modunu devre dışı bırakırsam uygulamamı etkiler mi? – Arnab
Varsayılan olarak devre dışı, yani hayır. –
Veya "int i = unchecked ((int) val)" yazabilir ve derleyicinin "checked" ayarından bağımsız olarak çalışır. –