我想知道爲什麼當從int
類型移動到long
類型時,基於模運算的以下代碼解決方案爲什麼不起作用。給定正數在Java中類型長的所有數字的總和
例如給出111111111111L
我想返回12L
。
我該如何實現在下面的問題中描述的相同的預期行爲(這隻適用於int類型值)? Sum of all digits for a given Positive Number
我也專注於性能問題,所以我正在尋找一個有效的解決方案。
public static long sumTheDigitsVersion1(long inputValue){
long sum = inputValue % 9L;
if(sum == 0){
if(inputValue > 0)
return 9L;
}
return sum;
}
public static long sumTheDigitsVersion2(long inputValue){
return inputValue - 9L * ((inputValue - 1L)/9L);
}
感謝
不要依賴異地資源在您的問題。如果你喜歡,可以鏈接它們,但總是引用你問題中的相關位。 –
爲什麼你會期望'12'作爲輸出。你連接的這個問題,找到[數字根](http://en.wikipedia.org/wiki/Digital_root),通過總和數字減少數字,直到你得到一個數字。所以,對於'12',它會再次被減少到'1 + 2 = 3'。 –
@dasblinkenlight。 '111111111111L'可以被認爲是小數? –