Как умножить значение BigInteger на значение BigDecimal?

У меня есть одно значение BigInteger и одно значение BigDecimal, которые я хотел бы умножить вместе и получить результат BigDecimal.

Например, если у меня есть

Большой Целый #1: 95

BigDecimal #1: 0,25124

Перемножив их вместе, мы получим: 23,8678.

Вот что я пробовал:

    long firstLong = 95;
    float firstFloat = 0.25124f;
    BigInteger b1 = BigDecimal.valueOf(firstLong).toBigInteger();
    BigDecimal bd1 = BigDecimal.valueOf(firstFloat);

    BigDecimal multipliedResult = b1.multiply(bd1);
    System.out.println(multipliedResult);

Ожидаемый результат: 23,8678

Текущий вывод: «Метод умножения (BigInteger) в типе BigInteger неприменим для аргументов (BigDecimal)»

Да, и вы также не можете умножать BigInteger на 15 или "a" или new Thread() - опять к чему вы? Вы проверяли API?

Smutje 03.07.2019 14:49

Вам нужно научиться читать javadoc. Если вы сделаете это, вы обнаружите, что вы можете только умножать BigInteger на BigInteger или BigDecimal на BigDecimal. Но также то, что BigDecimal позволяет создавать BigDecimal из BigIntgeer или преобразовывать BigDecimal в BigInteger. Таким образом, составляя эти функции, вы можете делать все, что вам нужно. Но вам нужно прочитать javadoc.

JB Nizet 03.07.2019 14:52
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
848
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто переверни ситуацию:

BigDecimal multipliedResult = bd1.multiply(new BigDecimal(b1))

Вы не можете сделать someBigInt.multiply(someBigDec), но someBigDec.multiply(someBigDecCreatedFromBigInt) прекрасно работает!

Другие вопросы по теме