mathematical-expression
mathematical-expression copied to clipboard
【bug 反馈】【<=1.3.5】【已解决】【Java API 的数学解析在进行浮点操作可能会精度丢失】
Describe the bug
此问题来自于 【精度丢失】【java 版本好像都有】【含小数数学的表达式】 的提出者:https://github.com/chennxu
在进行浮点计算的时候,由于 Java 的浮点计算采用的 IEEE 754
标准,导致浮点运算会出现精度丢失的情况,
your code
package top.lingyuzhao;
import core.Mathematical_Expression;
import core.calculation.Calculation;
import core.container.LogResults;
public class MAIN {
public static void main(String[] args) {
// 获取到一个有括号计算组件 您可以根据需求更换组件
final Calculation instance = Mathematical_Expression.getInstance(Mathematical_Expression.bracketsCalculation2);
// 然后进行一个简单的检查 这里我们要查询 0.3 * 3 的执行过程
final String s = "0.3 * 3";
// 我们可以通过 explain 获取到执行过程 它会返回一个对象 这个对象中有一个 result 字段 这个字段就是计算出来的结果
final LogResults explain = instance.explain(s, true);
System.out.println("计算结果:" + explain.getResult());
}
}
Expected behavior
我们期望它返回的结果是
0.9
但是它返回的结果却是0.8999999999999999
Additional context
此问题的在 1.3.6
版本中已更新!!!您可以在讨论区发现解决方案!!!