簡単な解決策かもしれませんが、修正できません。
私は2つの整数を除算しています:
finishedGameFinalScore = [score integerValue];
CGFloat interval = 2/finishedGameFinalScore;
NSLog(@"interval = %f",interval);
ログは0.000000
小数点以下の桁数に制限はありますか?小数の結果を保存する必要があります。
ありがとうシャニ
簡単な解決策かもしれませんが、修正できません。
私は2つの整数を除算しています:
finishedGameFinalScore = [score integerValue];
CGFloat interval = 2/finishedGameFinalScore;
NSLog(@"interval = %f",interval);
ログは0.000000
小数点以下の桁数に制限はありますか?小数の結果を保存する必要があります。
ありがとうシャニ
コードが機能しない理由は、整数を別の整数で除算し、その結果を浮動小数点数にキャストしているためです。
つまり、2(整数)と他の数(これも整数)があります。次に、2をこの数値で割ります。これはおそらく2より大きいでしょう。3だとしましょう。
Integer
2/3を見て、彼は「0.66666667?うーん、とにかく小数点以下は誰も必要ない」のようです。それで彼はそれを切り詰めます。あなたはただ0を持っています。
それからInteger
氏に番号を与え、float
氏float
は番号を取得してとても幸せです!彼はすべて「イェーイ、0!私はすべての有効数字を追加するつもりです」のようなものです。そして、それはあなたが0.0000000で終わる方法です。
そうそう、最初にフロートにキャストするだけです。またはダブル!
@ Dustinは、floatに入るときに、整数値を示すように、除算器の値をfloatに型キャストする必要があると述べました。
ケース1:型キャスト
NSString *score = @"3";
int interval = [str intValue];
CGFloat interval = (2/(float)interval);
NSLog(@"interval = %.2f",interval);
ケース2:型キャストの必要はありません
NSString *score = @"3";
float interval = [str floatValue];
CGFloat interval = (2/interval);
NSLog(@"interval = %.2f",interval);
数字の2にf-hintを追加するだけです。この場合、これでうまくいきます。
CGFloat interval = 2.0f/finishedGameFinalScore;
上記/下記のすべての答えは正しく、これが機能する理由を完全に説明しています。
1.0からlong値を割り出し、float変数に割り当てます。
unsigned long l1 = 65536;
unsigned long l2 = 256;
float f = (l1/1.0)/(l2/1.0);
NSLog(@"%f",f);