java 在 2 个小数位后剪切字符串?
java cut string after 2 decimal digits?
我有这个字符串
17.12121
我只想将其保存为
17.12
我已经尝试使用这个命令:
answer = String.format("%.2f", str1);
但他给了一个例外
java.util.IllegalFormatConversionException: f != java.lang.String
为什么?
最后我想得到的答案是 x.xx
谢谢,
要使用 %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));
如果您想使用浮点数格式,您可以将字符串解析为浮点数,然后使用 "%.2f
。
如果您只想将字符串的小数点后两位截断,您可以找到 .
字符并根据其位置取一个子字符串。
int index = str1.indexOf('.');
if (index >= 0) {
answer = str1.substring(0, index+3);
} else {
answer = str1;
}
BigDecimal d= new BigDecimal("17.12121").setScale(2, RoundingMode.DOWN);
System.out.println(d);
我有这个字符串
17.12121
我只想将其保存为
17.12
我已经尝试使用这个命令:
answer = String.format("%.2f", str1);
但他给了一个例外
java.util.IllegalFormatConversionException: f != java.lang.String
为什么?
最后我想得到的答案是 x.xx
谢谢,
要使用 %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));
如果您想使用浮点数格式,您可以将字符串解析为浮点数,然后使用 "%.2f
。
如果您只想将字符串的小数点后两位截断,您可以找到 .
字符并根据其位置取一个子字符串。
int index = str1.indexOf('.');
if (index >= 0) {
answer = str1.substring(0, index+3);
} else {
answer = str1;
}
BigDecimal d= new BigDecimal("17.12121").setScale(2, RoundingMode.DOWN);
System.out.println(d);