float 操作で奇妙な結果が得られました。
float a = myView.frame.size.height / 2.0;
float b = (myFrame.size.height / 2.0);
float c = a-b;
デバッグ モード: a = 201; b = 201; c = -3.05176e-05 ???
どうして??
float 操作で奇妙な結果が得られました。
float a = myView.frame.size.height / 2.0;
float b = (myFrame.size.height / 2.0);
float c = a-b;
デバッグ モード: a = 201; b = 201; c = -3.05176e-05 ???
どうして??
問題は、実際に myView.frame.size.height と myFrame.size.height を計算する方法にあります。
両方とも正確に 402 の場合、c はゼロになります。通常の浮動小数点数の場合、2 による除算は正確です。そのうちの少なくとも 1 つは 402 とわずかに異なります。違いの原因を見つける必要がある場合は、さらに数字を出力して正確に 402 でないものを確認し、その変数がどのように計算されたかを調べる必要があります。
ただし、float を使用すると、一般に有効桁数 7 桁付近で丸め誤差が発生することが予想されるため、絶対値が約 1e-4 未満の 200 付近の値の差をゼロとして扱うという別のオプションがあります。