如何使用BigDecimal提取小數點後的數字?BigDecimal中的提取數小數點
BigDecimal d = BigDecimal.valueOf(1548.5649);
結果:僅提取物:5649
如何使用BigDecimal提取小數點後的數字?BigDecimal中的提取數小數點
BigDecimal d = BigDecimal.valueOf(1548.5649);
結果:僅提取物:5649
嘗試:
BigDecimal d = BigDecimal.valueOf(1548.5649);
BigDecimal result = d.subtract(d.setScale(0, RoundingMode.FLOOR)).movePointRight(d.scale());
System.out.println(result);
打印:如果該值爲負
5649
BigDecimal d = BigDecimal.valueOf(1548.5649);
BigDecimal fraction = d.remainder(BigDecimal.ONE);
System.out.println(fraction);
// Outputs 0.5649
它的工作......謝謝:) – Mehdi
你不知道哪個鍵入要作爲一個結果。最簡單的方法可能是通過BigDecimal轉換成字符串,並採取子:
String s = d.toPlainString();
int i = s.indexOf('.');
if (i < 0) {
return "";
}
return s.substring(i + 1);
這隻適用於使用的語言環境。作爲小數點分隔符。但有些地區正在使用,。 – BetaRide
@BetaRide:我知道,我講法語,逗號在這裏使用。但BigDecimal.toPlainString()不支持本地感知。無論區域設置如何,它都使用小數點作爲小數點分隔符。 –
,使用d.subtract(d.setScale(0, RoundingMode.FLOOR))
將返回一個錯誤的小數。
使用此:
BigInteger decimal =
d.remainder(BigDecimal.ONE).movePointRight(d.scale()).abs().toBigInteger();
它返回5649
爲1548.5649
或-1548.5649
注意:您應該使用'BigDecimal.valueOf( 「1548.5649」);',而不是因爲double'之間'轉換和'BigDecimal'會導致奇怪的副作用。如果你需要精確度,避免'double'和'float'。 –
@AaronDigulla我認爲你的意思是新的BigDecimal(「1548.5649」),因爲沒有BigDecimal.valueOf(String)方法。 –