簡體   English   中英

Math.round(6.079084800080882E-5)= 0.0?

[英]Math.round(6.079084800080882E-5) = 0.0?

我正在嘗試四舍五入

6.079084800080882E-5

但是每當我運行該應用程序時,結果就是

X = 0.0

這是我的代碼

tmp = 6.079084800080882E-5;
x = (double)Math.round(tmp);

我不僅輸入一個隨機數(6.079084800080882E-5),而且這是事先進行一些計算后得出的數值。 這些計算無關緊要,因為這是我要舍入的數字。

Math.round()返回longint ,因此,如果將絕對值小於0.5的數字傳遞給它,則將得到0。0非常舍入。

這必須為0,因為6.079084800080882E-5 = 0.000060790084000。 E-5表示10 ^(-5)。

正如已經指出的那樣, Math.round()作為標准的回合,因此總是讓您擺脫任何小數位並返回整數。

如果需要四舍五入到小數點后的位數,這就是您需要的

import java.math.BigDecimal;
import java.math.RoundingMode;

public class RoundingExample {

    public static void main(String[] args) {
        double tmp = 6.079084800080882E-5;
        System.out.println(round(tmp, 3));
        System.out.println(round(tmp, 4));
        System.out.println(round(tmp, 5));
        System.out.println(round(tmp, 6));
        System.out.println(round(tmp, 7));
    }

    public static double round(double value, int places) {
        if (places < 0) {
            throw new IllegalArgumentException();
        }

        BigDecimal bd = new BigDecimal(value);
        bd = bd.setScale(places, RoundingMode.HALF_UP);
        return bd.doubleValue();
    }
}

上面的代碼具有此輸出

0.0
1.0E-4
6.0E-5
6.1E-5
6.08E-5

暫無
暫無

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

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