4
我試圖在我的程序中遞歸添加一些CGFloat值。我只是在一個特定的場景中意識到生成的總數是不正確的。爲了確保我的程序邏輯沒有任何問題,我創建了一個該場景的簡單示例(請參閱下文),並打印出相同的錯誤值。CGFloat添加bug?
CGFloat arr[3] = {34484000,512085280,143011440};
CGFloat sum = 0.0;
sum = arr[0] + arr[1] + arr[2];
NSLog(@"%f",sum);
int arr1[3] = {34484000,512085280,143011440};
int sum1 = 0.0;
sum1 = arr1[0] + arr1[1] + arr1[2];
NSLog(@"%d",sum1);
第一的NSLog打印689580736.000000 ......而正確的結果689580720.但是第二NSLog的打印正確的結果。我不確定這是一個錯誤還是我做錯了什麼。
謝謝, 穆拉利
對於正確和詳細的答案+1。 – Till
Paul,謝謝你的回答。我認爲它必須處理一些限制問題。你的筆記澄清了它。我將它從CGFloat改爲double,並打印出正確的結果。同樣基於我剛剛閱讀的其他信息 - 浮點數有7位數限制,雙15/16和小數位數28/29位數限制。感謝這篇文章,我會在閒暇時閱讀它。 –