我试图写一个这样的负数:
} else if ([newsCondition.temperature floatValue] == -7.0f) {
但不会触发它,负号是黑色而数字是蓝色。如何在温度等于-7.0度时写入数字以便触发?
答案 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
}
答案 1 :(得分:0)
浮点运算被许多人认为是一个深奥的主题 人。这是相当令人惊讶的,因为浮点无处不在 在计算机系统中。几乎每种语言都有浮点数 数据类型;从PC到超级计算机的计算机都有浮点数 加速器;大多数编译器都会被要求编译 浮点算法不时;几乎每一个 操作系统必须响应浮点异常,例如 溢出。本文提供了关于这些方面的教程 浮点对计算机设计者有直接影响 系统。它以浮点表示的背景开始 和舍入误差,继续讨论IEEE 浮点标准,并以众多例子结束 计算机构建者可以更好地支持浮点。
来自What Every Computer Scientist Should Know About Floating-Point Arithmetic