謎題三 長整除

2022-09-05 06:45:11 字數 737 閱讀 5307

public class longdivision

}這樣看來好像很簡單,除數中所有的因子都被約掉了,只

剩下 1000,這正是每毫秒包含的微秒數。

除數和被除數都是 long 型別的,long 型別大到了可以很容易地儲存這兩個乘積

而不產生溢位。

因此,看起來程式列印的必定是 1000。

然而程式執行結果卻是 『5』

不可思議。。

原因在書中說:「這個計

算完全是以 int 運算來執行的,並且只有在運算完成之後,其結果才被提公升到

long,而此時已經太遲了:計算已經溢位了,它返回的是乙個小了 200 倍的數值。

從 int 提公升到 long 是一種拓寬原始型別轉換(widening primitive conversion),

它保留了(不正確的)數值。這個值之後被 millis_per_day 整除,而

millis_per_day 的計算是正確的,因為它適合 int 運算。這樣整除的結果就得

到了 5。

」第乙個因子被程式看成了int,因此先用int來執行,沒有計算完,就超出了int的儲存範圍溢位了,縮水了很多倍,所以依照它的說法,稍微改動一下程式就可以改正了,比如:

這個結果就是1000了,很顯然,把第乙個因子強制定義為long型別,不溢位,結果自然就正確了。。。

可被三整除的最大和

可被三整除的最大和 給你乙個整數陣列nums,請你找出並返回能被三整除的元素最大和。示例 1 輸入 nums 3,6,5,1,8 輸出 18解釋 選出數字 3,6,1 和 8,它們的和是 18 可被 3 整除的最大和 示例 2 輸入 nums 4 輸出 0解釋 4 不能被 3 整除,所以無法選出數字...

python實現三壺謎題的示例詳解

有乙個充滿水的8品脫的水壺和兩個空水壺 容積分別是5品脫和3品脫 通過將水壺完全倒滿水和將水壺的水完全倒空這兩程式設計客棧種方式,在其中的乙個水壺中得到4品脫的水。這裡的第乙個數就代表著是那個8品脫的瓶子,依次分別是8品脫,5品脫,3品脫 就如同上圖一樣,使用層次遍歷一次一次遞迴擴充套件新的結點,知...

1262 可被三整除的最大和

給你乙個整數陣列 nums,請你找出並返回能被三整除的元素最大和。示例 1 輸入 nums 3,6,5,1,8 輸出 18 解釋 選出數字 3,6,1 和 8,它們的和是 18 可被 3 整除的最大和 示例 2 輸入 nums 4 輸出 0 解釋 4 不能被 3 整除,所以無法選出數字,返回 0。示...