2011-01-27 189 views

回答

1

a)將尾隨零存儲在浮點數是沒有意義的。

B)12.1將不能準確地映射到浮點值(儘管這可能不會立即顯現)

2

,如果你不擔心內存中,然後

String str = "12.00"; 
    BigDecimal bd= new BigDecimal(str); 
    System.out.println(bd);//12.00 
0

使用java.text.DecimalFormat

DecimalFormat fmt = new DecimalFormat("0.00"); 
double floatval = fmt.parse("12.10").doubleValue(); 
String sval = fmt.format(floatval); 
1

從布洛赫,J.,有效的Java,第2版,第48項:

floatdouble類型 特別不適合用於貨幣 計算,因爲它是不可能 代表0.1(或10中的任何其他 負電源),爲floatdouble準確。

例如,假設您有$ 1.03 並且您花費42c。 你剩下多少錢?

System.out.println(1.03 - .42); 

打印出0.6100000000000001

解決這個問題的正確方法是 使用BigDecimalintlong 貨幣計算。

實施例:

BigDecimal price = new BigDecimal("12.10");