Java 答案是什么?

Java 答案是什么?,java,decimalformat,exp,natural-logarithm,Java,Decimalformat,Exp,Natural Logarithm,请原谅我的无知,我是初学者 有人能告诉我为什么在下面的if/else语句中出现错误代码吗?我认为我的ln乘法的结果与标准乘法不完全相同(有一个.0000000000 6的差或类似的值)。这有什么办法吗?我曾尝试使用DecimalFormat,但没有用 如果我加上: DecimalFormat fmt = new DecimalFormat ("0.###"); 向测试人员和 if (fmt.format(z) != fmt.format(result)){ 对于if语句,我收到了自己

请原谅我的无知,我是初学者

有人能告诉我为什么在下面的if/else语句中出现错误代码吗?我认为我的ln乘法的结果与标准乘法不完全相同(有一个.0000000000 6的差或类似的值)。这有什么办法吗?我曾尝试使用DecimalFormat,但没有用

如果我加上:

DecimalFormat fmt = new DecimalFormat ("0.###");
向测试人员和

    if (fmt.format(z) != fmt.format(result)){
对于if语句,我收到了自己的相同错误语句。怎么了

多谢各位

您正在比较字符串引用而不是它们的值,并且希望
string.equals()
例如
z.equals(result)

然而,我想你要做的是比较两个十进制数的精度。更直观的方法是计算差异并确定其是否在可接受的误差范围内,例如

if (Math.abs(z - result) < 0.01) {
   // ok
}
if(Math.abs(z-result)<0.01){
//嗯
}
有关更多详细信息,请参见

您正在比较字符串引用而不是它们的值,并且您需要
string.equals()
例如
z.equals(result)

然而,我想你要做的是比较两个十进制数的精度。更直观的方法是计算差异并确定其是否在可接受的误差范围内,例如

if (Math.abs(z - result) < 0.01) {
   // ok
}
if(Math.abs(z-result)<0.01){
//嗯
}
有关更多详细信息,请参见,我建议试试

如果(!fmt.format(z).equals(fmt.format(result)){

我建议试试


如果(!fmt.format(z).equals(fmt.format(result)){

我认为这是因为double。为了获得最佳实践,请改用BigDecimal。
请看一下“。

我认为这是因为双精度。最佳做法是使用BigDecimal。 请看一下“”

  • 使用BigDecimal而不是double
  • 用数学代替数学
  • 使用BigDecimal而不是double
  • 用数学代替数学

  • 您必须始终使用
    equals()
    来比较字符串。请参见示例:)您将字符串与
    =
    进行比较。请参见您必须始终使用
    equals()来比较字符串
    。请参见示例:)您正在将字符串与
    ==
    进行比较。请参见您的意思是BigDecimal而不是BigInteger?当然,BigDecimal。谢谢您的更正。我尝试了此操作并收到错误:[行:54]无法取消引用double我尝试了此操作并收到错误:[行:54]无法取消引用double