我想實現一個新的四捨五入BigDecimal類,並且我得到一個可能的錯誤,可能我做錯了什麼。下面的代碼暴露了我的問題:Java BigDecimal錯誤與字符串構造函數四捨五入ROUND_HALF_UP
public static void main(String[] args) throws IOException {
BigDecimal valDouble = new BigDecimal(0.35);
valDouble = valDouble.setScale(1, BigDecimal.ROUND_HALF_UP);
System.out.println(valDouble.doubleValue()); // prints 0.3
BigDecimal valString = new BigDecimal(new String("0.35"));
valString = valString.setScale(1, BigDecimal.ROUND_HALF_UP);
System.out.println(valString.doubleValue()); // prints 0.4
}
我的疑問是,BigDecimal對於double和String構造函數是不同的嗎?
我無法理解這樣的「錯誤」,至少,我只是用一個簡單的字符串連接到「解決」了,如下圖所示:
BigDecimal valDouble = new BigDecimal("" + 0.35);
任何想法,這可能是造成這種奇怪的行爲?
不知道你在這裏問什麼。請澄清問題所在。 – 2012-07-06 19:27:47
[This](http://www.youtube.com/watch?v=wbp-3BJWsU8&feature=player_detailpage#t=243s)可能會讓你感興趣。 – Pshemo 2012-07-06 19:32:44