java截断两位小数后的字符串吗?

时间:2018-07-12 11:03:59

标签: java string string-formatting

我有这个字符串

  

17.12121

我只想另存为

  

17.12

我尝试使用此命令:

answer = String.format("%.2f", str1);

但他给出了例外

java.util.IllegalFormatConversionException: f != java.lang.String

为什么?

最后我将答案归为x.xx

谢谢,

3 个答案:

答案 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);