要转换的字符串

时间:2011-01-27 09:38:10

标签: java string-formatting

我需要将值为12.10的字符串转换为浮点值而不会丢失零。我怎样才能在Java中实现这一点。

4 个答案:

答案 0 :(得分:2)

如果你不担心记忆,那么

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

答案 1 :(得分:1)

a)将尾随零存储在浮点数中是没有意义的。

b)12.1不会精确映射到浮点值(虽然这可能不会立即显现)

答案 2 :(得分:1)

来自Bloch,J.,Effective Java,2nd ed,Item 48:

  

floatdouble类型   特别不适合货币   计算,因为这是不可能的   表示0.1(或任何其他   负的权力为10)作为float或   完全double

     

例如,假设您有1.03美元   你花了42c。多少钱呢   你离开了吗?

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

打印出0.6100000000000001

     

解决这个问题的正确方法是   使用BigDecimalintlong   用于货币计算。

示例:

BigDecimal price =  new BigDecimal("12.10");

答案 3 :(得分:0)

使用java.text.DecimalFormat

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