java.bigDecimal划分在ruby环境中

时间:2010-05-02 22:24:40

标签: jruby bigdecimal divide

我在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))

因为我在这个IDE中没有intellisense,所以我不确定语法是否正确,运行时错误是:

未初始化的常量:: HALF_EVEN

  1. 我是否以正确的方式在ruby scrpit中组合java对象?
  2. 如何在ruby env中划分两个java.bigDecimal对象?

2 个答案:

答案 0 :(得分:1)

尝试

number1 = one.divide(number1, RoundingMode::Half_EVEN)

答案 1 :(得分:0)

在Java中它会是RoundingMode.HALF_EVEN;它是Ruby中的RoundingMode::HALF_EVEN。您也可以使用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
      

    BigDecimal由任意精度整数未缩放值和32位整数 scale 组成。如果为零或正数,则比例是小数点右侧的位数。如果是负数,则将数字的未缩放值乘以10来表示比例的否定。