如何删除字符串值中的尾部零并删除小数点后的小数点? 我使用下面的代码:如何删除字符串值中的尾部零并删除小数点
String string1 = Double.valueOf(a).toString()
这将删除(10.10和10.2270)尾随零,但是我没有得到我的第一次和第二次输入的预期结果。
输入
10.0
10.00
10.10
10.2270
预计输出
10
10
10.1
10.227
如何删除字符串值中的尾部零并删除小数点后的小数点? 我使用下面的代码:如何删除字符串值中的尾部零并删除小数点
String string1 = Double.valueOf(a).toString()
这将删除(10.10和10.2270)尾随零,但是我没有得到我的第一次和第二次输入的预期结果。
输入
10.0
10.00
10.10
10.2270
预计输出
10
10
10.1
10.227
尝试
DecimalFormat decimalFormat = new DecimalFormat("#.##");
String string1 = decimalFormat.format(10.000);
这将删除第二个尾数位以外的任何内容。 – jdphenix 2014-08-28 06:50:20
尝试正则表达式是这样的:
public static void main(String[] args) {
String s = "10.0";
System.out.println(s.replaceAll("[0]+$", "").replaceAll("(\\.)(?!.*?[1-9]+)", ""));
}
O/P:
10
input :String s = "10.0750";
O/P : 10.075
input : String s = "10.2750";
O/P : 10.275
我不介意低调。但我想知道**为什么**? – TheLostMind 2014-08-28 07:00:26
不是DV,但正如其他人所说的“可能不适用于所有区域,有些使用小数点作为组分隔符” – 2014-08-29 00:01:08
Java库有一个内置的类,可以为此执行此操作。这是BigDecimal
。
下面是一个例子用法:
BigDecimal number = new BigDecimal("10.2270");
System.out.println(number.stripTrailingZeros().toPlainString());
输出:
10.227
注:使用BigDecimal
构造函数,一个String
是很重要的。你可能不想要那个需要double
的人。
这里是一个将采取Collection<String>
和去除尾随零,礼品包装返回数的另一种Collection<String>
的方法。
public static Collection<String> stripZeros(Collection<String> numbers) {
if (numbers == null) {
throw new NullPointerException("numbers is null");
}
ArrayList<String> value = new ArrayList<>();
for (String number : numbers) {
value.add(new BigDecimal(number).stripTrailingZeros().toPlainString());
}
return Collections.unmodifiableList(value);
}
实例:
ArrayList<String> input = new ArrayList<String>() {{
add("10.0"); add("10.00"); add("10.10"); add("10.2270");
}};
Collection<String> output = stripZeros(input);
System.out.println(output);
输出:
[10, 10, 10.1, 10.227]
没办法,很酷+1 – 2014-08-28 06:25:11
我发现'stripTrailingZeros()'同时调用了'toPlainString ()'会导致超出规范的输出。我纠正了我的答案。 – jdphenix 2014-08-28 06:42:11
我没有问这个问题lol – 2014-08-28 06:44:29
尝试使用的BigDecimal – 2014-08-28 06:00:24
最好的选择是正则表达式这样的要求 – vikeng21 2014-08-28 06:04:28
@ScaryWombat所提出的重复有一个'double'作为输入。这个问题有一个'String'。 – jdphenix 2014-08-28 07:14:18