簡體   English   中英

使用 Math.random() 在 Java 中舍入

[英]Rounding in Java using Math.random()

假設我寫

System.out.println (Math.random()*5);

那么在 [0, 4.9...] 中會得到 x 的輸出。 但是將其轉換為整數后,我不斷看到的結果(在我的課程中)是 [0, 4]。 我的問題是我們如何定義舍入函數; 我熟悉樓層函數,並且 4.9... 的樓層正好是 5,因為不存在大於零的 epsilon 滿足某些 epsilon 鄰域中存在的輸出 x; 即,等式 4.9... = 5 就足夠了,並且因為整數的下限是該整數,所以結果將為 5。

我哪里出錯了?

撰寫新答案以解決評論中提出的問題。 Math.random()的輸出在 [0,1) 范圍內。 結果將是一個嚴格小於 1 的數字,因此Math.random()*5將給出范圍 [0,5) 內的結果,即一個嚴格小於 5 的數字。由於強制截斷,這意味着您的結果將在整數集 {0, 1, 2, 3, 4} 中,五個值中的每一個的概率(大約)相等。

Java:Math.random() Max Value (double just than 1)有一些關於Math.random()可能的精確值的數學的更多細節。

當你像這樣轉換為 int 時

int i = (int) 4.9;

JVM 將簡單地刪除小數位,您將獲得分配給變量的值 4。 它不是四舍五入,而是截斷,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM