我有一个接收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。有什么理由会发生这种情况吗?我在某个地方犯了一个愚蠢的错误吗?
感谢您的帮助!
答案 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。