如何将 double 转换为 String 并删除点值后面的所有尾随零?
How to convert double to String and remove all trailing zero behind the point value?
我一直在寻找解决方案并在这里做了一些变通,但无法全部满足我的期望。例如,我有如下的双值
double x = 101.00000
double y = 102.02000
double z = 103.20000
double k = 104.30020
我希望所有的值都变成字符串,它们必须显示的小数位数最少。预期结果
String l = "101"
String m = "102.02"
String n = "103.2"
String o = "104.3002"
// and the l = formatted x, m = formatted y, n = formatted z, o = formatted k
这可以通过任何方式实现吗?
(注意:有人建议我的问题可能与删除 java 中的尾随零重复,但我认为这是不同的,因为在我的问题中,基值是 double 而不是 String)
希望这对您有所帮助:
public static String format(double val) {
if(val == (long)val)
return String.format("%d", (long) val);
else
return String.format("%s", val);
}
输入:
1. 101.00000
2. 102.02000
输出:
1. 101
2. 102.02
将双精度转换为字符串
在Java中,如果你想将一个值类型转换成另一个值类型,你应该看到这个'another type' class并尝试找到一个转换方法。
在这种情况下,您希望将 Double 类型转换为 String。字符串 class 有一个名为 String.valueOf(double d)
的方法,它将数字值更改为字符串。由于重载属性,它还可以将其他数字类型转换为字符串。
删除不必要的零
获得字符串值后,对每个值使用此代码以删除不必要的零。
s = s.indexOf(".") < 0 ? s : s.replaceAll("0*$", "").replaceAll("\.$", "");
你的情况:
Double x = 101.00000;
Double y = 102.02000;
Double z = 103.20000;
Double k = 104.30020;
String l = String.valueOf(x);
String m = String.valueOf(y);
String n = String.valueOf(z);
String o = String.valueOf(k);
l = l.indexOf(".") < 0 ? l : l.replaceAll("0*$", "").replaceAll("\.$", "");
m = m.indexOf(".") < 0 ? m : m.replaceAll("0*$", "").replaceAll("\.$", "");
n = n.indexOf(".") < 0 ? n : n.replaceAll("0*$", "").replaceAll("\.$", "");
o = o.indexOf(".") < 0 ? o : o.replaceAll("0*$", "").replaceAll("\.$", "");
输出:
- 101
- 102.02
- 103.2
- 104.3002
我一直在寻找解决方案并在这里做了一些变通,但无法全部满足我的期望。例如,我有如下的双值
double x = 101.00000
double y = 102.02000
double z = 103.20000
double k = 104.30020
我希望所有的值都变成字符串,它们必须显示的小数位数最少。预期结果
String l = "101"
String m = "102.02"
String n = "103.2"
String o = "104.3002"
// and the l = formatted x, m = formatted y, n = formatted z, o = formatted k
这可以通过任何方式实现吗?
(注意:有人建议我的问题可能与删除 java 中的尾随零重复,但我认为这是不同的,因为在我的问题中,基值是 double 而不是 String)
希望这对您有所帮助:
public static String format(double val) {
if(val == (long)val)
return String.format("%d", (long) val);
else
return String.format("%s", val);
}
输入:
1. 101.00000
2. 102.02000
输出:
1. 101
2. 102.02
将双精度转换为字符串
在Java中,如果你想将一个值类型转换成另一个值类型,你应该看到这个'another type' class并尝试找到一个转换方法。
在这种情况下,您希望将 Double 类型转换为 String。字符串 class 有一个名为 String.valueOf(double d)
的方法,它将数字值更改为字符串。由于重载属性,它还可以将其他数字类型转换为字符串。
删除不必要的零
获得字符串值后,对每个值使用此代码以删除不必要的零。
s = s.indexOf(".") < 0 ? s : s.replaceAll("0*$", "").replaceAll("\.$", "");
你的情况:
Double x = 101.00000;
Double y = 102.02000;
Double z = 103.20000;
Double k = 104.30020;
String l = String.valueOf(x);
String m = String.valueOf(y);
String n = String.valueOf(z);
String o = String.valueOf(k);
l = l.indexOf(".") < 0 ? l : l.replaceAll("0*$", "").replaceAll("\.$", "");
m = m.indexOf(".") < 0 ? m : m.replaceAll("0*$", "").replaceAll("\.$", "");
n = n.indexOf(".") < 0 ? n : n.replaceAll("0*$", "").replaceAll("\.$", "");
o = o.indexOf(".") < 0 ? o : o.replaceAll("0*$", "").replaceAll("\.$", "");
输出:
- 101
- 102.02
- 103.2
- 104.3002