以下代码返回一个意外的(和错误的值)。Objective-C Ceil()不返回正确的值
x1 = ceil(ceil(ceil(100*1.0f)*1.0f)*1.1f);
它返回111不是110。据我所知,乘以1的数是没有意义的,但那些1的并不总是那些。当它们是其他值时,该功能按预期工作。
以下代码返回一个意外的(和错误的值)。Objective-C Ceil()不返回正确的值
x1 = ceil(ceil(ceil(100*1.0f)*1.0f)*1.1f);
它返回111不是110。据我所知,乘以1的数是没有意义的,但那些1的并不总是那些。当它们是其他值时,该功能按预期工作。
使用ceilf
运营商的固定对我来说:
float x1 = ceilf(ceilf(ceilf(100*1.0f)*1.0f)*1.1f);
NSLog(@"%f",x1); // 110
这是一个浮点错误的问题。 1.1f可能真的很像1.100056778。
这意味着100 * 1.100056778 = 110.0056778。而这一数字的ceil
是111
啊真。任何建议如何解决这个问题? –
1.1f正好(在IEEE 754中)是1.10000002384185791015625。 –
@robmayoff好的 - 我只是举个例子来说明问题。很高兴知道。你记住了吗?你知道多少个* pi *数字? :) – rmaddy
完美。谢谢 –