2011-01-27 192 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");