以下代碼返回一個意外的(和錯誤的值)。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
完美。謝謝 –