簡體   English   中英

Java 無Math.round、BigDecimal等小數點后兩位四舍五入

[英]Java Rounding two digits after decimal point without Math.round, BigDecimal, etc

干草,

我只想通過使用這個數學公式來舍入小數點后兩位數:
數學公式

例如,數字831.38849應四舍五入為 831.39 並打印出來。 我嘗試過這樣的事情,但沒有奏效: 0.01 * (100 * number + 0.5)

我知道以前也有人問過類似的問題,但我不允許使用所有花哨和簡單的東西來完成這項任務,比如Math.roundBigDecimal

⌊ ⌋ ⌋ 是地板的數學符號 function 1 , 2 , 3

所以數學公式的正確實現
公式圖像
是以下Java代碼:

Math.floor(100d * number + 0.5) / 100d

注意: 100d也可以寫成100.0100.或簡單的100 (假設numberdouble

因此,花哨的部分是通過將浮點數轉換為整數值來處理的。 您想消除小數點右側兩位的部分,因此您首先將其乘以 100 以移動小數點,添加 0.5 以四舍五入 0.5 或更高,轉換為 int(或 long)以截斷它, 然后除以 100 將小數點向后移動。

[編輯——添加條件來處理否定,因此它符合“地板”的定義。]

double original_number = 831.38849;
double rounded_number = (original_number >= 0) 
   ? ((long) (original_number * 100 + 0.5)) / 100.0
   : ((long) (original_number * 100 - 0.5)) / 100.0;

暫無
暫無

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

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