這可能是一個簡單的解決方案,但我無法修復它。整數除法後浮點數爲0
我除以2點的整數:
finishedGameFinalScore = [score integerValue];
CGFloat interval = 2/finishedGameFinalScore;
NSLog(@"interval = %f",interval);
日誌返回0.000000
是否有小數的限制嗎?我需要保留十進制結果。
感謝 沙尼
這可能是一個簡單的解決方案,但我無法修復它。整數除法後浮點數爲0
我除以2點的整數:
finishedGameFinalScore = [score integerValue];
CGFloat interval = 2/finishedGameFinalScore;
NSLog(@"interval = %f",interval);
日誌返回0.000000
是否有小數的限制嗎?我需要保留十進制結果。
感謝 沙尼
您的代碼不工作的原因是,你將一個整數被另一個整數,然後鑄造結果爲float。
所以你有2(一個整數)和一些其他數字(也是一個整數)。然後你除以2這個數字 - 這可能是大於2.假設它是3.
Integer
見2/3,他就像「0.66666667?Pshh,沒有人需要小數點後任何東西」。所以他截斷了它。你只有0.
然後Integer
給數字先生float
和先生float
是超級開心得到一個數字!他就像「好吧,0!我要添加所有重要的數字」。這就是你最終得到0.0000000的結果。
所以是的,只是先投到一個浮動。甚至是雙倍!
即使只是'CGFloat interval = 2.0/finishedGameFinalScore;'(add '.0')。作爲'2。0'是'CGFloat',結果將是一個'CGFloat'保存所有的小數。 – 2016-02-16 15:07:21
@達斯汀說ü將需要類型轉換您分頻器值浮動,因爲它去浮法它顯示整數值
案例1:強制轉換
NSString *score = @"3";
int interval = [str intValue];
CGFloat interval = (2/(float)interval);
NSLog(@"interval = %.2f",interval);
CASE 2:無需類型轉換
NSString *score = @"3";
float interval = [str floatValue];
CGFloat interval = (2/interval);
NSLog(@"interval = %.2f",interval);
正是在這種情況下,會做的伎倆的F-提示添加到數字2。
CGFloat interval = 2.0f/finishedGameFinalScore;
所有上面/下面的答案都是正確的,完全解釋了爲什麼這項工作。
通常情況下,如果已經有兩個答案,除非添加重要的重要數據,否則不會將其添加爲新答案。如果你認爲它真的增加了一些東西,你可以在問題或其他答案上發表評論。但我會爲它+1,因爲你是新的。 – Dustin 2012-08-15 16:40:47
只是從1.0開始分配長值並分配給浮點型變量。
unsigned long l1 = 65536;
unsigned long l2 = 256;
float f = (l1/1.0)/(l2/1.0);
NSLog(@"%f",f);
'CGFloat的finishedGameFinalScore = [得分的floatValue];''CGFloat的間隔= 2.0F/finishedGameFinalScore;' – janusbalatbat 2012-08-15 12:30:10
你必須通過一個浮動指針數目來劃分以獲得一個浮點數。 – Joe 2012-08-15 12:31:16
對於每種基於C的語言都是如此。將兩個整數相除會得到一個整數。 – borrrden 2012-08-15 12:32:18