【发布时间】:2020-04-09 21:25:49
【问题描述】:
我正在用 Java 编写一个 API,代码的行为应该类似于另一个用 Node 编写的微服务。
用Node写的有问题的部分是这样的:
const totalValue = // this value comes from a query
const risk = // it is a percentage value from another query
const riskValue = totalValue * (risk / 100);
const available = +(totalValue - riskValue).toFixed(2);
return available;
经过几次测试后,我以这种方式编写了 Java API:
BigDecimal totalValue = ...
BigDecimal risk = ...
BigDecimal riskValue = totalValue.multiply(risk.divide(new BigDecimal(100)));
BigDecimal available = totalValue.subtract(riskValue).setScale(2, RoundingMode.HALF_DOWN));
几天后第一个错误:
totalValue = 62822.65
risk = 10
节点返回:
56540.385.toFixed(2); // "56540.39"
这个具体数字没有像我预期的那样在我的 Java API 中四舍五入。
但是,这个数字是四舍五入的:
56540.395.toFixed(2); // "56540.39"
JavaScriptNumber.toFixed(2)背后的逻辑是什么?
如何在Java中复制这个函数行为?
提前致谢。
【问题讨论】:
-
Number.toFixed() 你去吧。
标签: javascript java node.js