私はこれをまったく理解できません。ここで何が問題なのですか?
1.0
、、、1.0f
と入力してみまし(CGFloat) 1.0
た(CGFloat)(2.0 - 1.0)
。毎回同じエラー。
私はこれをまったく理解できません。ここで何が問題なのですか?
1.0
、、、1.0f
と入力してみまし(CGFloat) 1.0
た(CGFloat)(2.0 - 1.0)
。毎回同じエラー。
数値の小数部分 0.9 は浮動小数点数では正確に表すことができません。いくつかの丸めが発生し、それがおそらく失敗の理由です。
0.9 = (1/2) + (1/4) + (1/8) + (1/64) + (1/128) + (1/1024) + (1/2048) + (1/16384) + (1/32768) + (1/262144) など = 0,8999978005 など
人間の目には丸く見える分数でも、連星系では丸くない場合があります。
0.5 は、CPU = (1/2) のラウンド数です。
0.75 は、CPU の丸め = (1/2) + (1/4) です。
0,9072265625 も丸め ( (1/2) + (1/4) + (1/8) + (1/32) + (1/1024) )
しかし、0.9 や 0.1 ではありません。0.2すらありません:)
編集:そしてもちろん、浮動小数点数の比較にはイプシロンを使用します。
に変更しました
mov.value = 8.9
XCTAssertEqualWithAccuracy(mov.lastDelta, 0.0f, 0.001, @"");
そして、今はうまく機能しているようです...