我有这个字符串
17.12121
我只想另存为
17.12
我尝试使用此命令:
answer = String.format("%.2f", str1);
但他给出了例外
java.util.IllegalFormatConversionException: f != java.lang.String
为什么?
最后我将答案归为x.xx
谢谢,
答案 0 :(得分:1)
要使用%f
,您应该拥有float
而不是String
,而可以使用:
answer = String.format("%.2f", Float.valueOf(str1));
^^^^^^^^^^^^^^^^^^^
请注意,格式遵循Locale
,因此可以将点转换为,
,结果可以是17,12
而不是17.12
,以确保得到点可以这样使用Locale.US:
answer = String.format(Locale.US, "%.2f", Float.valueOf(str1));
答案 1 :(得分:0)
如果要使用浮点格式,可以将字符串解析为浮点,然后使用"%.2f
。
如果只想在小数点后两位截断字符串,则可以找到.
字符并根据其位置取一个子字符串。
int index = str1.indexOf('.');
if (index >= 0) {
answer = str1.substring(0, index+3);
} else {
answer = str1;
}
答案 2 :(得分:0)
BigDecimal d= new BigDecimal("17.12121").setScale(2, RoundingMode.DOWN);
System.out.println(d);