2016-11-17 2 views
-2

В Java я работаю с классом BigDecimal, и часть моего кода требует, чтобы я извлек из него часть int. BigDecimal, похоже, не имеет встроенных методов, которые помогут мне получить число до десятичной точки BigDecimal.Извлечь часть части BigDecimal?

Например:

BigDecimal bd = new BigDecimal("23452.4523434"); 

Я хочу, чтобы извлечь 23452 из числа, представленного выше. Каков наилучший способ сделать это?

+0

Вы хотите, чтобы все без дробной части или в буквальном смысле все, что вписывается в 'int'? – harold

+0

Не могли бы вы объяснить разницу? Я не уверен, что вы имеете в виду –

+0

* «BigDecimal не имеет встроенных методов, чтобы помочь мне получить число перед десятичной точкой BigDecimal» *: Да, этот метод довольно скрыт: https: // docs .oracle.com/javase/7/docs/api/java/math/BigDecimal.html # intValue() ... – Tom

ответ

1

Зависит от того, что вы имеете в виду под "экстракт". Каков тип результата извлечения? Другой BigDecimal, BigInteger, int, long, String или что-то еще?

Вот код для них все:

BigDecimal result1 = bd.setScale(0, RoundingMode.DOWN); 
BigInteger result2 = bd.toBigInteger(); 
int  result3 = bd.intValue(); // Overflow may occur 
long  result4 = bd.longValue(); // Overflow may occur 
String  result5 = bd.toBigInteger().toString(); 
String  result6 = bd.setScale(0, RoundingMode.DOWN).toString(); 

NumberFormat fmt = new DecimalFormat("0"); 
fmt.setRoundingMode(RoundingMode.DOWN); 
String  result7 = fmt.format(bd); 
Смежные вопросы