如何在obj C中写下负数?

时间:2014-01-21 07:38:11

标签: objective-c numbers

我试图写一个这样的负数:

} else if ([newsCondition.temperature floatValue] == -7.0f) { 

但不会触发它,负号是黑色而数字是蓝色。如何在温度等于-7.0度时写入数字以便触发?

2 个答案:

答案 0 :(得分:1)

您编写负数(-7.0f)的方式是正确的。

至于你的代码没有触发:数字的浮点表示并不完美,在将浮点数相互比较时你必须注意这些问题。

如果您想比较两个浮点数,可以使用'epsilon'(即可接受的错误)进行比较。这基本上是检查数字是否足够接近。

简单天真的例子:

#define EPSILON 0.00001f

float x = 0.09f;
float y = 0.0901f;

if (abs(y - x) < EPSILON) {
    // close enough to be considered equal;
    // do something here
}

有关详细信息,请参阅http://floating-point-gui.de/errors/comparison/

答案 1 :(得分:0)

  

浮点运算被许多人认为是一个深奥的主题   人。这是相当令人惊讶的,因为浮点无处不在   在计算机系统中。几乎每种语言都有浮点数   数据类型;从PC到超级计算机的计算机都有浮点数   加速器;大多数编译器都会被要求编译   浮点算法不时;几乎每一个   操作系统必须响应浮点异常,例如   溢出。本文提供了关于这些方面的教程   浮点对计算机设计者有直接影响   系统。它以浮点表示的背景开始   和舍入误差,继续讨论IEEE   浮点标准,并以众多例子结束   计算机构建者可以更好地支持浮点。

来自What Every Computer Scientist Should Know About Floating-Point Arithmetic