我需要将值为12.10的字符串转换为浮点值而不会丢失零。我怎样才能在Java中实现这一点。
答案 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:
float
和double
类型 特别不适合货币 计算,因为这是不可能的 表示0.1(或任何其他 负的权力为10)作为float
或 完全double
。例如,假设您有1.03美元 你花了42c。多少钱呢 你离开了吗?
System.out.println(1.03 - .42);
打印出
0.6100000000000001
。解决这个问题的正确方法是 使用
BigDecimal
,int
或long
用于货币计算。
示例:
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);