Как преобразовать из float в bigDecimal в java?
Как конвертировать из float в bigDecimal в java?
Ответ 1
BigDecimal value = new BigDecimal(Float.toString(123.4f));
Из javadocs конструктор строк обычно является предпочтительным способом преобразования float
в BigDecimal, поскольку он не страдает от непредсказуемости конструктора BigDecimal(double)
.
Цитата из документов:
Примечание. Для значений other float и double NaN и ± Infinity этот конструктор совместим со значениями, возвращаемыми Float.toString(float) и Double.toString(double). Обычно это предпочтительный способ преобразования float или double в BigDecimal, поскольку он не страдает от непредсказуемости конструктора BigDecimal (double).
Ответ 2
float f = 45.6f;
BigDecimal bd = BigDecimal.valueOf(f);
Цитата из документации:
Примечание. Обычно это предпочтительный способ преобразования двойного (или float) в BigDecimal, так как возвращаемое значение равно в результате построения BigDecimal из результата использования Double.toString(дважды).
Ссылка: BigDecimal (платформа Java SE 6)
Ответ 3
Для точности 3 цифры после десятичной точки:
BigDecimal value = new BigDecimal(f,
new MathContext(3, RoundingMode.HALF_EVEN));
Ответ 4
Это мне известно:
public static BigDecimal floatToBigDecimal(Float a){
if(a == null || a.isInfinite() || a.isNaN()){
return BigDecimal.ZERO;
}
try{
return BigDecimal.valueOf(a);
}catch(Exception e){
return BigDecimal.ZERO;
}
}
* Примечание. Обычно это предпочтительный способ преобразования double (или float) в BigDecimal, так как возвращаемое значение равно результату построения BigDecimal из результата использования Double.toString(double).
public static BigDecimal valueOf (double val)
Параметры:
val - двойное преобразование в BigDecimal.
Возврат:
BigDecimal, значение которого равно или приблизительно равно значению val.
Броски:
NumberFormatException - если val бесконечно или NaN.
С
1.5
Я проверил, является ли Infinite или Not Number, так что меньше шансов на NumberFormatException
Ответ 5
new BigDecimal(myfloat)
Ответ 6
Используйте конструктор float
:
float f = 10.0f;
BigDecimal b = new BigDecimal(f);