Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C Ceil()未返回正确的值_Objective C_Ios_Ceil - Fatal编程技术网

Objective-C Ceil()未返回正确的值

Objective-C Ceil()未返回正确的值,objective-c,ios,ceil,Objective C,Ios,Ceil,以下代码返回了一个意外的(错误的)值 它返回的是111而不是110。我知道将一个数字乘以1是没有意义的,但那些1并不总是1。当它们是其他值时,函数按预期工作。这是一个浮点错误问题。1.1f可能真的有点像1.100056778 这意味着100*1.100056778=110.0056778。这个数字的ceil是111。使用ceilf操作符为我修复了它: float x1 = ceilf(ceilf(ceilf(100*1.0f)*1.0f)*1.1f); NSLog(@"%f",x1); // 1

以下代码返回了一个意外的(错误的)值


它返回的是111而不是110。我知道将一个数字乘以1是没有意义的,但那些1并不总是1。当它们是其他值时,函数按预期工作。

这是一个浮点错误问题。1.1f可能真的有点像1.100056778


这意味着100*1.100056778=110.0056778。这个数字的
ceil
是111。

使用
ceilf
操作符为我修复了它:

float x1 = ceilf(ceilf(ceilf(100*1.0f)*1.0f)*1.1f);
NSLog(@"%f",x1); // 110

啊,是的。有什么建议可以解决这个问题吗?1.1f是1.10000002384185791015625(在IEEE 754中)。@robmayoff OK-我只是举个例子来说明问题。很高兴知道。你记住了吗?你知道圆周率的多少位数?:)十七岁。你呢?实际上,网络上有几个IEEE 754转换器。喜欢
float x1 = ceilf(ceilf(ceilf(100*1.0f)*1.0f)*1.1f);
NSLog(@"%f",x1); // 110