-2

I have a strange result with float operation:

float a = myView.frame.size.height / 2.0;
float b = (myFrame.size.height / 2.0);
float c = a-b;

in debug mode: a = 201; b = 201; c = -3.05176e-05 ???

Why??

4

1 回答 1

1

问题实际上在于您如何计算 myView.frame.size.height 和 myFrame.size.height。

如果它们都恰好是 402,那么 c 将为零。除以 2 对普通浮点数来说是准确的。其中至少有一个与 402 略有不同。如果您需要找出差异的原因,您需要打印更多数字以查看哪个不完全是 402,并查看该变量是如何计算的。

但是,考虑到使用浮点数,您通常应该期望在第 7 个有效数字附近出现舍入误差,因此您的另一个选择是将绝对幅度小于约 1e-4 的 200 左右的值差异视为零。

于 2013-09-05T12:11:59.890 回答