Путать с этим математическим ответом, используя переменную двойного типа - PullRequest
1 голос
/ 10 января 2010

Это действительно странно, надеюсь, свежая пара глаз поможет мне понять это. Я использую этот код в приложении для iPhone, но считаю, что он использует простой код на C, поэтому не уверен, что это имеет значение или нет. У меня есть пользователь, введенный число (в этом случае число будет 2,2). Затем я делю это число на 0,2.

На своем калькуляторе я получаю ответ 11.

Однако, используя следующий код, я получаю ответ 10:

NSString *userNameFour = txtUserName4.text; 
double numFour = [userNameFour intValue];

double t_psd = numFour/0.2;

поэтому теперь, когда я печатаю переменную t_psd, я получаю 10.000000. Что я тут не так делаю?

Ответы [ 3 ]

4 голосов
/ 10 января 2010

Этот intValue бит выглядит подозрительно ... я думаю, что numFour в конечном итоге будет 2.0, а не 2.2. Вы уверены, что не имели в виду doubleValue?

Попробуйте это:

NSString *userNameFour = txtUserName4.text; 
double numFour = [userNameFour doubleValue];

double t_psd = numFour / 0.2;

(Это одна из проблем, которые у меня возникают с числовыми парсерами, которые просто останавливают , когда достигают символа, которого они не ожидают. Если бы вы использовали Java или .NET с Integer.parseInt или int.Parse ошибка была бы очевидна - возникло бы исключение, говорящее, что «2.2» не является текстовым представлением целого числа.)

3 голосов
/ 10 января 2010

[userNameFour intValue] возвращает (int) 2, который преобразуется в (double) 2.0, когда вы назначаете его numFour И 2.0 / 0.2 = 10.0.

Вы хотите использовать [userNameFour doubleValue].

2 голосов
/ 10 января 2010

intValue преобразует вашу строку в int, а не в double. Вы хотите doubleValue вместо:)

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