下面的測試失敗:的Java 8:DecimalFormat的與舍入HALF_UP模式
@Test
public void testRound() throws Exception {
double v = 0.015d;
DecimalFormat format = new DecimalFormat("#.##", new DecimalFormatSymbols(Locale.US));
format.setRoundingMode(RoundingMode.HALF_UP);
assertEquals("0.02", format.format(v));
}
我看到有解決的問題爲Java 7和Java 8,但它仍然沒有對「jdk1.8.0_144爲我工作「:
junit.framework.ComparisonFailure: null
Expected :0.02
Actual :0.01
0.015不能exatly表示爲浮動點n紅棕色。它發生的最接近的可能表示略少,因此向下舍入。 – Henry
雙數和浮點數不能完全表示0.015。不要使用雙重;而是從一開始就使用BigDecimal。 –
那麼,這是一個正常的行爲?這不是Java 8中的錯誤,是嗎? –