在BigDecimal divide方法中使用MathContext对象

时间:2014-07-13 05:41:40

标签: java javascript bigdecimal

我正在使用JavaScript BigDecimal library by Daniel Trebbien(特别是 BigDecimal-all-last.min.js )编写测试用例,我似乎无法在divide方法中使用MathContext对象没有抛出错误“MathContext()错误的表单值”

由于这个库是Java的直接端口,我使用的是this documentation。由于“表单”(参数#2)和“舍入模式”(参数#4)都只是常量,我不明白为什么我会收到“错误的表单值”错误。我的Webstorm IDE看到常量很好,所以我知道它们在那里。将“形式”常量更改为“工程”或任何其他常量并不能解决问题。

var mc = new MathContext(3, BigDecimal.PLAIN, false, BigDecimal.ROUND_HALF_EVEN);
var two = new BigDecimal("2");
var seven = new BigDecimal("7");
var twoSevenths = two.divide(seven, mc); // constructor divide(BigDecimal, MathContext)
console.log(twoSevenths.toString()); // expecting 0.286

你看到我做错了吗?

**

更新

当然还有其他可以使用的除法构造函数,但是单个MathContext对象的多次重用对于Tiny JavaScript项目来说是理想的,因此是这里的重点。

**

1 个答案:

答案 0 :(得分:1)

您的代码中有一个小错字。 PLAIN常量实际上是在MathContext中定义的,因此第一行应该是:

var mc = new MathContext(3, MathContext.PLAIN, false, BigDecimal.ROUND_HALF_EVEN);

通过此修复," 0.286"按预期记录到控制台。