如何将 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