对double执行操作返回0

时间:2010-10-25 00:24:25

标签: iphone objective-c double

我有一个接收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 个答案:

答案 0 :(得分:3)

尝试做(5.0 / 9.0)。如果你只使用一个int做数学,你希望返回一个double(如0.55),小数位后的所有内容都将丢失,因为cpu需要返回一个int。

答案 1 :(得分:1)

5 / 9是两个整数的除法,因此使用整数除法,它通常执行除法,然后截断结果。因此5 / 9的结果始终是整数0。

答案 2 :(得分:0)

尝试:

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

如果您将(5/9)评估为整数,那么它只是0。