2

我正确的 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 中没有智能感知,所以我不确定语法是否正确,运行时错误是:

未初始化的常量::HALF_EVEN

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

2 回答 2

1

尝试

number1 = one.divide(number1, RoundingMode::Half_EVEN)
于 2010-05-02T22:38:43.993 回答
0

它本来是RoundingMode.HALF_EVEN在 Java 中的;它 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

    ABigDecimal由一个任意精度的整数未缩放值和一个 32 位整数scale组成。如果为零或正数,则刻度是小数点右侧的位数。如果为负数,则将数字的未缩放值乘以 10 的负数次方。

于 2010-05-02T22:34:51.300 回答