簡體   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