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