Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
2位小数后的java剪切字符串?_Java_String_String Formatting - Fatal编程技术网

2位小数后的java剪切字符串?

2位小数后的java剪切字符串?,java,string,string-formatting,Java,String,String Formatting,我有这根绳子 17.12121 我只想把它保存为 17.12 我已尝试使用此命令: answer = String.format("%.2f", str1); 但他给出了一个例外 java.util.IllegalFormatConversionException: f != java.lang.String 为什么? 最后我得出的答案是x.xx 谢谢,要使用%f您应该有一个浮点数而不是字符串,您可以使用: answer = String.format("%.2f", Float.value

我有这根绳子

17.12121

我只想把它保存为

17.12

我已尝试使用此命令:

answer = String.format("%.2f", str1);
但他给出了一个例外

java.util.IllegalFormatConversionException: f != java.lang.String
为什么?

最后我得出的答案是x.xx


谢谢,

要使用
%f
您应该有一个
浮点数
而不是
字符串
,您可以使用:

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

请注意,格式遵循
区域设置
,因此可以将点转换为
结果可以是
17,12
,而不是
17.12
,以确保获得点,您可以使用区域设置。我们如下所示:

answer = String.format(Locale.US, "%.2f", Float.valueOf(str1));

如果要使用浮点格式,可以将字符串解析为浮点,然后使用%.2f

如果只想在小数点后两位剪切字符串,只需找到
字符并根据其位置获取子字符串

int index = str1.indexOf('.');
if (index >= 0) {
    answer = str1.substring(0, index+3);
} else {
    answer = str1;
}

%f
用于格式化浮点数,而不是字符串。str1是字符串吗?
answer=String.format(“%.2f”,Float.valueOf(str1));
BigDecimal d= new BigDecimal("17.12121").setScale(2, RoundingMode.DOWN);
System.out.println(d);