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