Почему в этом коде Objective C / Cocoa округляется значение float - PullRequest
1 голос
/ 20 марта 2010

Я делаю простое:

float x = 151.185436;
printf("x=%f",x);

и результат

х = 151,185440

Что здесь не так? Я хочу сохранить и распечатать мое первоначальное значение 151.185436

Спасибо Amarsh

Ответы [ 3 ]

3 голосов
/ 20 марта 2010

поплавки не очень точны. Попробуйте дважды. И прочитайте это: http://docs.sun.com/source/806-3568/ncg_goldberg.html

2 голосов
/ 20 марта 2010

Число с плавающей запятой может содержать только 32 бита (4 байта) информации о вашем номере - оно не может просто хранить столько десятичных разрядов, сколько вам нужно. 151.18544 настолько близко к вашему значению, что число с плавающей запятой может отображаться без исчерпания битов.

Для точности, которую вы хотите, вам нужно использовать двойное число вместо числа с плавающей запятой.

0 голосов
/ 20 марта 2010

Поплавки неточные, используйте двойные. Кроме того, поскольку вы используете Objective C, а не прямой C, было бы лучше, если бы вы использовали для этого функции Objective C:

myNumber = [NSNumber numberWithDouble:151.185436];
NSLog(@"myNumber = %@", myNumber);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...