Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
符号数学在JAVA中的实现_Java_Wolfram Mathematica_Jlink - Fatal编程技术网

符号数学在JAVA中的实现

符号数学在JAVA中的实现,java,wolfram-mathematica,jlink,Java,Wolfram Mathematica,Jlink,我正在尝试构建一个表达式解析器,用于计算数学表达式的值。然而,问题是对于某些类别的表达式,其计算结果为无理数 让我们举一个例子,例如(√2) ² 这应该计算为2。但是由于程序编码的逻辑,它返回一个小数点 首先√计算2,其等于1.4142135,然后将结果平方,得出1.999998 目前,我们所能做的就是将表达式发送到via,然后使用结果。然而,这需要第三方软件的帮助 我想知道这整件事是否可以用java实现 是的,您当然可以用Java实现表达式解析器。我认为您的根本错误不在于Java编程,而在于程

我正在尝试构建一个表达式解析器,用于计算数学表达式的值。然而,问题是对于某些类别的表达式,其计算结果为无理数

让我们举一个例子,例如
(√2) ²
这应该计算为
2
。但是由于程序编码的逻辑,它返回一个小数点

首先
√计算2
,其等于
1.4142135
,然后将结果平方,得出
1.999998

目前,我们所能做的就是将表达式发送到via,然后使用结果。然而,这需要第三方软件的帮助


我想知道这整件事是否可以用java实现

是的,您当然可以用Java实现表达式解析器。我认为您的根本错误不在于Java编程,而在于程序设计

Double value = new Double(2);
Double power = new Double(2);
Double result = Math.pow(value, power);
result = Math.sqrt(result);
System.out.print(result);
您不应该在尽可能晚的时候评估surds。相反,您应该计算表达式,如
(sqrt(n))^2
sqrt(n)*sqrt(n)
sqrt(n)*sqrt(n)
n
。只有这样,你才能考虑将<代码> n>代码>转换成等价的浮点数。


您在方法中发现的错误是浮点运算的一个特性,您将很难克服它。更好的策略是通过在符号表达式上实现符号操作来解决这个问题。

是的,您当然可以在Java中实现表达式解析器。我认为您的根本错误不在于Java编程,而在于程序设计

您不应该在尽可能晚的时候评估surds。相反,您应该计算表达式,如
(sqrt(n))^2
sqrt(n)*sqrt(n)
sqrt(n)*sqrt(n)
n
。只有这样,你才能考虑将<代码> n>代码>转换成等价的浮点数。

您在方法中发现的错误是浮点运算的一个特性,您将很难克服它。一个更好的策略是通过对符号表达式执行符号操作来解决这个问题。

有一个可以给你一些线索。有一个可以给你一些线索。