【发布时间】:2015-06-15 09:40:34
【问题描述】:
我正在尝试将字符串转换为双精度。
源字符串的格式是“88.6”,我期望的双精度应该是“88.60”。
我尝试使用 Double.parseDouble、Double 构造函数、Double.valueOf、DecimalFormat 和 NumberFormat 硬编码 Locale.US 或 Locale.ENGLISH 进行转换,但我仍然得到“88,600000”。
我应该如何转换它?
谢谢
DecimalFormat df = new DecimalFormat("#.##", new DecimalFormatSymbols(Locale.US));
try {
dValue = df.parse(szValue).doubleValue();
} catch(ParseException e) {
e.printStackTrace();
}
【问题讨论】:
-
你问的是格式吗? 88.6、88.60 和 88.600000 在数学上是相同的。
-
您期望在 88.6、88.60 和 88.600000 之间有哪些不同的
double位模式? (提示:它们都是相同的值。double不“知道”尾随无关紧要的零……如果您关心这一点,您可能想要使用BigDecimal。) -
我也试过 BigDecimal,没办法.. 我需要“88.60”而不是“88,60”
-
我怀疑这是输出而不是转换的问题。你能展示你的印刷线吗?
-
这个值是查询MySQL的参数 String query = String.format(Query.brands, id, dBasePot); Query.brands 包含 %f 以格式化双 dBasePot