Выполнение операций с двойным возвратом 0 - PullRequest
0 голосов
/ 25 октября 2010

У меня есть метод, который получает число в формате NSString.

Я хочу преобразовать эту строку в двойную, которую я могу использовать для вычисления температуры.

Вот мой метод.

NSString *stringTemp = text; // text is a NSString 
NSLog(@"%@",stringTemp); // used for debugging
double tempDouble = [stringTemp doubleValue];
NSLog(@"%f",tempDouble); // used for debugging

Обратите внимание, что я поместил здесь команды NSLog, чтобы посмотреть, было ли число правильным. Последний NSLog возвращает значение 82.000000 и т. Д. (Постоянно изменяется, так как это температура).


Далее я хотел бы использовать это double и преобразовать его в значение по Цельсию. Для этого я сделал это:

double celsiusTemp = (5 / 9) * (tempDouble - 32);

Делая это: NSLog(@"%d", celsiusTemp);, или это: NSLog(@"%f", celsiusTemp); оба дают мне значение 0 в консоли. Есть ли причина, по которой это могло бы произойти? Я где-то совершил глупую ошибку?

Спасибо за помощь!

Ответы [ 3 ]

3 голосов
/ 25 октября 2010

Попробуйте сделать (5.0 / 9.0). Если вы используете int только для математических операций, когда вы ожидаете, что будет возвращено двойное число (например, 0,55), все после десятичного знака будут потеряны, потому что процессор ожидает, что int будет возвращено.

1 голос
/ 25 октября 2010

5 / 9 - это деление двух целых чисел, и поэтому используется целочисленное деление, которое обычно выполняет деление, а затем усекает результат. Таким образом, результатом 5 / 9 всегда является целое число 0.

0 голосов
/ 25 октября 2010

Попробуйте:

double celsiusTemp = (5.0 / 9) * (tempDouble - 32); 

Если вы оцениваете (5/9) как целое число, то это просто 0.

...