gpt4 book ai didi

ios - XCTAssertEqualWithAccuracy 不工作

转载 作者:可可西里 更新时间:2023-11-01 04:15:35 25 4
gpt4 key购买 nike

谁能帮我回答为什么这个断言失败

XCTAssertEqualWithAccuracy (1.56, 1.57, .01, @"");

虽然这个有效

XCTAssertEqualWithAccuracy (1.56, 1.57, .02, @"");

我认为 1.56 与 1.57 相差 +- .01,所以它不应该失败。

最佳答案

你想错了。你用十进制数思考,但使用 float 。在浮点运算中,1.56 与 1.57 相差超过 0.01,因为这些数字都不能准确表示。试试这个:

#define printf(...) CFShow([NSString stringWithFormat:@""__VA_ARGS__]) // makes it look like C
printf("1.56 = %.20f", 1.56);
printf("1.57 = %.20f", 1.57);
printf("0.01 = %.20f", 0.01);
printf("1.57 - 1.56 = %.20f", 1.57 - 1.56);
printf("(1.57 - 1.56) - 0.01 = %.20f", (1.57 - 1.56) - 0.01);

然后惊叹于你的控制台显示

1.56                 = 1.56000000000000005329
1.57 = 1.57000000000000006217
0.01 = 0.01000000000000000021
1.57 - 1.56 = 0.01000000000000000888
(1.57 - 1.56) - 0.01 = 0.00000000000000000867

如果您想知道为什么,只需在谷歌上搜索“ float ”,找到许多出色的解释,然后阅读其中一项计算基础知识。

关于ios - XCTAssertEqualWithAccuracy 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21713800/

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