gpt4 book ai didi

matlab - ceil 函数不返回它应该返回的内容

转载 作者:太空宇宙 更新时间:2023-11-03 20:23:56 24 4
gpt4 key购买 nike

我对 matlab 中的 ceil 函数有疑问。当我说“ceil(192.00)”时,它应该返回 192。但是,当我声明一个变量 x 并将其赋值为 14*(256/20)+(256/20) 时,正好是 192.00,ceil(x) 返回 193。这是为什么?提前致谢!

最佳答案

这是由于 MATLAB 中的浮点运算 (more info here)。正如您所指出的,该值似乎192.00,但您没有显示的是小数点后的所有数字。如果将您的值与整数 192 进行比较,您会发现它实际上 只是 大于 192。不同之处在于浮点运算错误。

x = 14 * (256 / 20) + (256 / 20);
x - 192

2.8421709430404e-14

如果我们使用技术 mentioned by Daniel在评论中,我们实际上可以看到 xtrue 值,以验证它实际上大于 192。

num2str(x, 17)

192.00000000000003

或者为了搞笑

num2str(x, 48)

192.000000000000028421709430404007434844970703125

因为它略高,所以它会被 ceil 四舍五入到 193。

如果你想在 ceil 中有一点灵 active ,你总是可以在执行 ceil 之前从你的数字中减去一个小的 epsilon。这将允许一些浮点错误并为您提供预期的结果。

tolerance = 1e-12
ceil(x - tolerance)

192

关于matlab - ceil 函数不返回它应该返回的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36190407/

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