我使用這個代碼,以四捨五入的值:如何在JAVA中使用Math.round獲得我想要的內容?
Math.round(x * 100)/100.0;
但它不會返回我需要什麼。
如:x = 83.5067
我想要什麼:83.51
我能得到什麼:83.5
我使用這個代碼,以四捨五入的值:如何在JAVA中使用Math.round獲得我想要的內容?
Math.round(x * 100)/100.0;
但它不會返回我需要什麼。
如:x = 83.5067
我想要什麼:83.51
我能得到什麼:83.5
如果你的輸出是雙它將很好地工作的樣子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
我喜歡用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
- 方法是靈活的,你可以設置的小數位數以及需要的舍入模式。
我建議你使用格式化輸出而不是四捨五入。像,
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
'double's不_have_一些十進制數字;他們有許多二進制數字,這是不同的東西。如果你想要一個特定的小數位數,可以使用'BigDecimal'或者用'DecimalFormat'轉換成'String'。 –
在這種情況下'Math.round'返回'83.51'。你爲什麼認爲它是'83.5'? –
嗯,好吧。 JUnit測試預計83.51作爲輸出。但它是83.5。 所以我認爲這是代碼的這部分不能很好地工作,但你說它返回預期的數字。 我需要再次查看我的代碼。 –