2012-10-20 45 views
1

特質輸出我明白這一點:Java。從模運算

35%10回報5

但是,爲什麼000000035%10回報9

Ruby做同樣的事情。我用irb查了一下。

我應該去除填充數字的0嗎? java的功能是什麼?

+2

因爲它是十進制的29的十進制數。 –

+0

我在這個變量中有一些整數,以這樣的零開始,而其他的不是。它們都只是十進制整數,沒有一個應該是八進制的。我如何確保每個整數都被視爲小數? –

+0

您需要八進制數字(0..7)來製作八進制文字。 –

回答

3

當您將前導零後跟八進制數字(從07),您將創建一個octal literal。並且因爲十進制中的000000035是十進制中的29,所以其餘的109

UPDATE

如果你有一個字符串你的「八進制」,只需使用Integer.parseInt,你就會得到它解析爲一個小數。

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

我明白了。謝謝你。但我想要的任何整數,例如「000030」或「000123」在我處理它之前沒有零。我怎麼能做到這一點? –

+1

你有字符串嗎?或生成的代碼? –

+0

只是不要使用前導零。 –

3

數字字面上的前導零表示八進制數。

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

有關其他可用格式,請參閱this page

+0

這很奇怪,它爲什麼這樣做? – emschorsch

+0

有時,以接近內部CPU表示的格式指定常量很方便。 –

+0

雅我想我的意思是爲什麼它不同於二進制您在它之前0b00035或十六進制其中0x00035?這似乎是一個更好的避免這種混亂的系統。 – emschorsch