繁体   English   中英

对double执行操作将返回0

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM