![](/img/trans.png)
[英]-[NSOperationQueue operations] returns an empty array when it shouldn't?
[英]Performing operations on a double returns 0
我有一个方法可以接收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。 有什么原因会发生这种情况吗? 我在某个地方犯了一个愚蠢的错误吗?
谢谢您的帮助!
尝试做(5.0 / 9.0)。 如果您仅使用int进行数学运算,并且希望返回双精度数(例如0.55),则小数点后的所有内容都会丢失,因为cpu希望返回int。
5 / 9
是两个整数的分频,并且因此使用整数除法,它通常执行除法和截断,然后的结果。 这样的结果5 / 9
总是整数0。
尝试:
double celsiusTemp = (5.0 / 9) * (tempDouble - 32);
如果您将(5/9)撤消为整数,则它仅为0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.