mathematical-expression icon indicating copy to clipboard operation
mathematical-expression copied to clipboard

【bug 反馈】【<=1.3.5】【已解决】【Java API 的数学解析在进行浮点操作可能会精度丢失】

Open BeardedManZhao opened this issue 1 month ago • 2 comments

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 版本中已更新!!!您可以在讨论区发现解决方案!!!

BeardedManZhao avatar May 14 '24 10:05 BeardedManZhao