2014-12-21 26 views
1

我使用這個代碼,以四捨五入的值:如何在JAVA中使用Math.round獲得我想要的內容?

Math.round(x * 100)/100.0; 

但它不會返回我需要什麼。

如:x = 83.5067

我想要什麼:83.51 我能得到什麼:83.5

+2

'double's不_have_一些十進制數字;他們有許多二進制數字,這是不同的東西。如果你想要一個特定的小數位數,可以使用'BigDecimal'或者用'DecimalFormat'轉換成'String'。 –

+1

在這種情況下'Math.round'返回'83.51'。你爲什麼認爲它是'83.5'? –

+0

嗯,好吧。 JUnit測試預計83.51作爲輸出。但它是83.5。 所以我認爲這是代碼的這部分不能很好地工作,但你說它返回預期的數字。 我需要再次查看我的代碼。 –

回答

1

如果你的輸出是雙它將很好地工作的樣子here

public static void main (String[] args) throws java.lang.Exception 
{ 
    double a = Math.round(83.5067 * 100)/100.0; 
    System.out.println(a); 
} 

將打印83.51

0

我喜歡用BigDecimal這些類型的操作。

// Round it 
final BigDecimal myRoundedNumber = BigDecimal.valueOf(83.5067).setScale(2, RoundingMode.HALF_UP); 

// If you need it as a double 
final double d = myRoundedNumber.doubleValue(); 

setScale - 方法是靈活的,你可以設置的小數位數以及需要的舍入模式。

1

我建議你使用格式化輸出而不是四捨五入。像,

double x = 83.5067; 
System.out.printf("%.2f%n", x); 

但是,執行請求的四捨五入您可以使用

double x = 83.5067; 
x = Math.round(x * 100); 
x /= 100; 
System.out.println(x); 

兩個輸出

83.51 
相關問題