Пол, спасибо за ответ. Я думал, что это связано с каким-то ограничением проблемы. Ваша записка прояснила это. Я изменил его с CGFloat, чтобы удвоить, и он напечатал правильный результат. Также на основании другой информации, которую я только что прочитал - число с плавающей запятой имеет ограничение в 7 цифр, двойное - 15/16 и десятичное - 28/29. Спасибо за статью, я буду читать на досуге.

ался рекурсивно добавить некоторые значения CGFloat в моей программе. И я только что понял в одном конкретном сценарии, что общая сумма была неправильной. Чтобы убедиться, что в моей программной логике нет ничего плохого, я создал простой пример этого сценария (см. Ниже), и он напечатал то же неверное значение.

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)

Ваш ответ на вопрос