gpt4 book ai didi

java - 为什么这些不同的数字是相同的?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:45:52 26 4
gpt4 key购买 nike

我正在进行单元测试,我得到了这一行:

assertEquals(1.1886027926838422606868849265505866347, 1.18860279268384230000000000000000000000,0);

delta 为 0 时,它们必须完全相同才能通过,但显然不是,但是这个测试通过了,你自己试试吧。

将 delta 更改为 1E-50 仍然通过。

当它们是两个截然不同的数字时,为什么它会通过?

最佳答案

这是因为 Java 编译器将这两个数字文字四舍五入为相同的数字。

运行这个实验:

System.out.println(1.1886027926838422606868849265505866347);
System.out.println(1.18860279268384230000000000000000000000);

这会打印相同的数字 ( demo ):

1.1886027926838423
1.1886027926838423

double 原始类型最多只能处理 16 位小数,因此它无法将这些数字一直表示到最后一位。

如果您想要完全精确,请使用 BigDecimal相反。

关于java - 为什么这些不同的数字是相同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32194698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com