値全体を設定するCGFloat
場合(したがって、含意float
とdouble
値によって)、小数点を含めるのがベストプラクティスですか、それとも重要ではありませんか?例えば:
CGRect rect1 = CGRectMake(0, 10, 100, 200); // Approach 1
CGRect rect2 = CGRectMake(0.0, 10.0, 100.0, 200.0); // Approach 2
値全体を設定するCGFloat
場合(したがって、含意float
とdouble
値によって)、小数点を含めるのがベストプラクティスですか、それとも重要ではありませんか?例えば:
CGRect rect1 = CGRectMake(0, 10, 100, 200); // Approach 1
CGRect rect2 = CGRectMake(0.0, 10.0, 100.0, 200.0); // Approach 2
暗黙のキャストによって 10、20 などの一般的な値の精度が失われることはないため、通常は同じです。
ただし、整数がオーバーフローするというまれなケースでは、浮く。
例えば:
CGRect rect1 = CGRectMake(0, 10, 100, INT_MAX+1);
対:
CGRect rect1 = CGRectMake(0, 10, 100, (float)INT_MAX+1);
これら 2 つの式は合計で異なる値を示します。
あなたの場所では、整数のみを使用し、小数精度が必要な場合、または整数オーバーフローのリスクがある場合にのみ、浮動小数点数に切り替えます。
コンパイラは float への暗黙的な変換を行うため、どちらのメソッドも同じ float 値になるはずです。
ただし、アプローチ 2 は実際には double 型の値を指定しており、その後 float に変換されます。float を明示的に指定するには、f
接尾辞を追加する必要があります。200.0f
個人的には、常にこのような値を指定するxxx.0f
のは、それらが float であることを思い出させ、コンパイラがコードを解釈するために必要な余分な作業を台無しにするためです。
もちろん、私もやります:
static const float left = 0.0f;
static const float top = 10.0f;
static const float width = 100.0f;
static const float height = 200.0f;
CGRect rect3 = CGRectMake(left, top, width, height);