Java の剰余演算子に問題があります: 理由:
(int)2147483648l % 10
負の数 (-8) を返しますか?
(int) 2147483648l
ですので-2147483648
。to をキャストしていますがlong
、int
範囲外です。
long
を に変換しているため、負の数が得られますint
。あなたの場合に考えられる回避策は、10 進数の x mod 10 が単に小数点以下の桁数 (1 桁) であるという事実を利用することです。たとえば、156 を 10 で割ると 15 + (6/10) になるため、156 mod 10 は 6 になります。だから、あなたはこのようなことをすることができます
//get the number and make it a string
String numberAsString = String.valueOf(number);
//get the integer value of the last character in the string (basically the lowest place)
int mod10 = Integer.parseInt(numberAsString.charAt(numberAsString.length() - 1));
number
これは、あなたが望む限り、任意の整数に対して機能しますnumber % 10