java.bigDecimal деление в среде ruby - PullRequest
2 голосов
/ 03 мая 2010

Правильный скрипт на Ruby, включающий классы Java

require 'java'
include_class 'java.math.BigDecimal'
include_class 'java.math.RoundingMode'

во время скрипта мне нужно разделить 2 java.bigDecimal

 one = BigDecimal.new("1")
 number1 = BigDecimal.new("3")
 number1 = one.divide(number1,RoundingMode.new(HALF_EVEN))

, так как у меня нет intellisense в этой IDE, я не уверен, что синтаксис правильный и ошибка времени выполнения:

неинициализированная константа :: HALF_EVEN

  1. Правильно ли я комбинирую Java-объект в рубиновом скрипте?
  2. как мне разделить два объекта java.bigDecimal в ruby ​​env?

Ответы [ 2 ]

1 голос
/ 03 мая 2010

Попробуйте

number1 = one.divide(number1, RoundingMode::Half_EVEN)
0 голосов
/ 03 мая 2010

Это было бы RoundingMode.HALF_EVEN в Java; это RoundingMode::HALF_EVEN в Ruby. Вы также можете использовать перегрузку констант int (т. Е. BigDecimal::ROUND_HALF_EVEN), но перегрузка enum определенно подходит.

Вы можете контролировать шкалу коэффициента, используя перегрузку divide(BigDecimal divisor, int scale, RoundingMode mode).

Вот фрагмент кода Java:

    BigDecimal one = BigDecimal.ONE;
    BigDecimal three = BigDecimal.valueOf(3);

    System.out.println(one.divide(three, 10, RoundingMode.DOWN));
    // prints "0.3333333333"

    System.out.println(one.divide(three, 10, RoundingMode.UP));
    // prints "0.3333333334"

    System.out.println(one.divide(three, 333, RoundingMode.UNNECESSARY));
    // throws java.lang.ArithmeticException: Rounding necessary

Похожие вопросы

API ссылки

  • java.math.RoundingMode
  • java.math.BigDecimal

    A BigDecimal состоит из немасштабированного целого значения произвольной точности и 32-разрядного целого числа масштаб . Если ноль или положительный, шкала представляет собой количество цифр справа от десятичной точки. Если значение отрицательное, немасштабированное значение числа умножается на десять до степени отрицания шкалы.

...