Подтвердить что ты не робот

Как конвертировать из float в bigDecimal в java?

Как преобразовать из float в bigDecimal в java?

4b9b3361

Ответ 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);