簡體   English   中英

我可以實現將 double 轉換為 String 並刪除點值后面的所有尾隨零嗎?

[英]Can I achieved 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 中的尾隨零重復。但我建議它有所不同,因為在我的問題中,基值是雙精度而不是字符串)

希望這可以幫助:

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

Output:

1. 101
2. 102.02

將雙精度數轉換為字符串

在 Java 中,如果你想將一個值類型轉換為另一個,你應該看到這個 'another type' class 並嘗試找到一種轉換方法。

在這種情況下,您想將 Double 類型轉換為 String。 String class 有一個名為String.valueOf(double d)的方法,可將數值更改為 String。 由於重載屬性,它還可以將其他數字類型轉換為字符串。


去除不必要的零

獲得字符串值后,請將此代碼與每個值一起使用以刪除不必要的零。

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("\\.$", "");

Output:

  • 101
  • 102.02
  • 103.2
  • 104.3002

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM