Java的。模运算符的特殊输出

时间:2012-10-20 01:13:07

标签: java

我理解这一点:

35%10返回5

但是,为什么000000035%10会返回9

Ruby做同样的事情。我用irb检查了。

我应该删除填充数字的0吗?这样做的java函数是什么?

2 个答案:

答案 0 :(得分:3)

数字文字中的前导零表示八进制数。

000000035 = 035 = 3*8 + 5 = 29
29 % 10 = 9

有关其他可用格式,请参阅this page

答案 1 :(得分:3)

当您将前导零后跟八进制数字(从0添加到7)时,您正在创建octal literal。由于八进制中的000000035为十进制29,因此10的余数为9

<强>更新

如果您在字符串中包含“八进制文字”,只需使用Integer.parseInt即可将其解析为小数。

assert Integer.parseInt("035") == 35;