我是新來的Java和嘗試採取BigDecimal(例如99999999.99)並將其轉換爲字符串,但沒有小數位和尾隨數字。另外,我不想在逗號中輸入逗號,舍入也不需要。Java BigDecimal刪除十進制和結尾數字
我已經試過:
Math.Truncate(number)
但不支持BigDecimal的。
任何想法?
非常感謝。
我是新來的Java和嘗試採取BigDecimal(例如99999999.99)並將其轉換爲字符串,但沒有小數位和尾隨數字。另外,我不想在逗號中輸入逗號,舍入也不需要。Java BigDecimal刪除十進制和結尾數字
我已經試過:
Math.Truncate(number)
但不支持BigDecimal的。
任何想法?
非常感謝。
嘗試number.toBigInteger().toString()
使用此項。
BigDecimal truncated= number.setScale(0,BigDecimal.ROUND_DOWN);
BigDecimal without fractions是BigInteger。你爲什麼不使用BigInteger?
private void showDoubleNo(double n) {
double num = n;
int decimalPlace = 2;
BigDecimal bd = new BigDecimal(num);
bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP);
System.out.println("Point is "+bd);
}
這裏是最優雅的方式,我發現解決此問題:
public static String convertDecimalToString (BigDecimal num){
String ret = null;
try {
ret = num.toBigIntegerExact().toString();
} catch (ArithmeticException e){
num = num.setScale(2,BigDecimal.ROUND_UP);
ret = num.toPlainString();
}
return ret;
}
public static String convertBigDecimalToString(BigDecimal bg) {
System.out.println("Big Decimal Value before its convertion :" + bg.setScale(2, BigDecimal.ROUND_HALF_UP));
String bigDecStringValue = bg.setScale(0,BigDecimal.ROUND_HALF_UP).toPlainString();
System.out.println("Big Decimal String Value after removing Decimal places is :" + bigDecStringValue);
return bigDecStringValue;
}
請注意:我用「BigDecimal.ROUND_HALF_UP」,只是爲了確保,舍入模式走向「最近的鄰居」除非兩個鄰居都是等距的
完美,謝謝。 – 2009-08-22 23:26:22