我一直在尋找解決方案并在這里做一些解決方法,但無法滿足我的期望。例如,我有如下雙重值
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)
uj5u.com熱心網友回復:
希望這可以幫助:
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
uj5u.com熱心網友回復:
將 Double 轉換為字串
在 Java 中,如果要將值型別轉換為另一種值型別,您應該看到這個“另一種型別”類并嘗試找到一種轉換方法。
在這種情況下,您想將 Double 型別轉換為 String。String 類有一個方法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("\\.$", "");
輸出:
- 101
- 102.02
- 103.2
- 104.3002
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/396863.html
