我知道因UIKit使用CGFloat分辨率独立坐标系而使用.
但我想,以检查是否例如每次frame.origin.x是0它让我感到恶心:
if (theView.frame.origin.x == 0) {
// do important operation
}
Run Code Online (Sandbox Code Playgroud)
是不是CGFloat有比较时容易误报==,<=,>=,<,>?这是一个浮点,他们有不寻常的问题:0.0000000000041例如.
Objective-C在比较时是在内部处理这个,还是可能发生origin.x读取为零的情况并不是0真实的?
当使用Delphi 2009编译并运行时,此控制台应用程序会写"奇怪"."小于"运算符两边的值相等,但代码的行为就好像它们不相等.我该怎么做才能避免这个问题?
program Project5;
{$APPTYPE CONSOLE}
var
C: Currency;
begin
C := 1.32;
if C < 1.32 then
begin
WriteLn('strange');
end;
ReadLn;
end.
Run Code Online (Sandbox Code Playgroud)
ps代码适用于其他值.
此答案由巴里·凯利解释说,货币型"是不容易的浮点代码是相同的方式精度的问题."