我想用動態浮點實現具有指定長度的不同輸入數據長度的格式以供顯示。例如x.xxxx, xx.xxxx, xxx.xx, xxxx.x
。帶浮點數的格式
換句話說,
如果我有1.4
,我需要1.4000
。
如果13.4
那麼我需要13.400
,對於每個案件長度應該是5位數字(沒有點)。
我使用
DecimalFormat df2 = new DecimalFormat("000000");
,但不能建立一個正確的模式。有沒有解決方案? 感謝您的幫助。
我想用動態浮點實現具有指定長度的不同輸入數據長度的格式以供顯示。例如x.xxxx, xx.xxxx, xxx.xx, xxxx.x
。帶浮點數的格式
換句話說,
如果我有1.4
,我需要1.4000
。
如果13.4
那麼我需要13.400
,對於每個案件長度應該是5位數字(沒有點)。
我使用
DecimalFormat df2 = new DecimalFormat("000000");
,但不能建立一個正確的模式。有沒有解決方案? 感謝您的幫助。
以下不是生產代碼。它沒有考慮到主導負數,也沒有考慮常數的非常高的值。但我相信你可以用它作爲出發點。感謝Mzf的靈感。
final static int noDigits = 5;
public static String myFormat(double d) {
if (d < 0) {
throw new IllegalArgumentException("This does not work with a negative number " + d);
}
String asString = String.format(Locale.US, "%f", d);
int targetLength = noDigits;
int dotIx = asString.indexOf('.');
if (dotIx >= 0 && dotIx < noDigits) {
// include dot in result
targetLength++;
}
if (asString.length() < targetLength) { // too short
return asString + "0000000000000000000000".substring(asString.length(), targetLength);
} else if (asString.length() > targetLength) { // too long
return asString.substring(0, targetLength);
}
// correct length
return asString;
}
會發生什麼情況是數字超過5位數 - 比如123456789? – Mzf
@Mzf將它切成5個字符的長度。 123456789 = 12345,123.45677 = 123.45 – Gorets
所以爲什麼不把它轉換爲字符串,並採取前5個字符?如果它少,那麼在最後填零? – Mzf