正则表达式查找字符串
如果其他的答案还不够明确
String text = "00003600";
BigDecimal value = new BigDecimal(text).scaleByPowerOfTen(-2);
System.out.println(value);
打印
36.00
OR
String text = "00003600";
double value = Double.parseDouble(text)/100;
System.out.printf("%.2f%n", value);
打印
36.00
*正确的方法*是调用'scaleByPowerOfTen(-2)' - 替换'setScale(2)'和'divide' - 并且琐碎的复杂性。这正是我在我的评论中实际想到的。它只是修改'scale'属性,根本不需要重新计算。 – 2012-07-10 12:46:15
@MarkoTopolnik谢谢你的建议。 – 2012-07-10 13:28:10
只是解析字符串,然后除以100.或使用BigDecimal和缩放。
看起来像@MarkoTapolnik打我到BigDecimal的答案:) – 2012-07-10 12:19:46
最正确的方式(恕我直言):
String input = "00013650";
BigDecimal value = BigDecimal.valueOf(Long.parseLong(input), 2);
String output = value.toPlainString();
System.out.println(output);
输出:
136.5
当BigDecimals被设计为接受字符串输入时,为什么你会通过它? – 2012-07-10 12:38:38
只要这样我就可以通过相同的方法调用:) – 2012-07-10 12:44:03
Id避免这样做,使用'new BigDecimal(input).setScale(2)'会好很多。 – 2012-07-10 12:45:32
不要使用正则表达式。这对于BigDecimal来说是一个完美的例子。读为int,然后修改'scale'。 – 2012-07-10 12:17:05
请注意,前导零使数字解释为八进制数字。所以'010'实际上是'8'。 – 2012-07-10 12:23:36
'010'被认为是八进制的,只有部分源代码 – 2012-07-10 12:27:46