java - 在 BigDecimal 除法中使用 MathContext 对象

标签 java javascript bigdecimal

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

由于该库是从 Java 直接移植的,因此我使用 this documentation 。由于“形式”(参数#2)和“舍入模式”(参数#4)都只是常量,我不明白为什么我会收到“错误的形式值”错误。我的 Webstorm IDE 可以很好地识别这些常量,因此我知道它们就在那里。将“form”常量更改为“ENGINEERING”或任何其他常量并不能解决问题。

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 项目来说是理想的选择,因此是这里的重点。

**

最佳答案

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

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

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

关于java - 在 BigDecimal 除法中使用 MathContext 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719898/

相关文章:

java - 使用类似于使用 Java 的 Lisp 的对象制作通用链表

javascript - 不仅可以看到场景 BG 的折射效果,还可以看到 3D 模型的折射效果

javascript - 使用 javascript 立即获取输入[类型 ="file"] 值?

java - BigDecimal 的类型转换

java - 为什么在 Java 中构造 BigDecimal 时 Double.toString 的行为与 MathContext.DECIMAL64 不同?

java - 什么是供应商在谈论 java 时?

Java 类似功能在列表中不起作用

javascript - 如何让按钮对应于不同的下拉 div?

Java BigDecimal 将负值变为正值

java - 我可以使用 Java 操作同一文件中的混合文本/二进制数据吗?