如何区分未设置的浮点数和值为0的浮点数?

Nat*_*han 6 equality objective-c undefined cgfloat

给定一个未设置的浮点数时,我有一个方法需要做一个不同的方法,而不是一个值为0的浮点数.基本上,我需要检查一个变量是否已经存在,如果它的值为0则将其计算为set .

那么,我应该使用哪个占位符作为未设置值(nil,NULL,NO等)以及如何测试变量是否未设置而不为值0返回true?

gha*_*.st 16

您可以将浮动初始化为NaN(例如通过调用nan()nanf()),然后测试isnan()它们是否已更改为保持数字.(请注意,测试myvalue == nan()无法正常工作.)

这很简单(你可能会包含math.h在任何情况下)并且在概念上是合理的:任何未设置为数字的值都是"不是数字"......

  • 太棒了,谢谢你!我使用`CGFloat myFloat = NAN;`和`if(isnan(myFloat)){...}`. (5认同)
  • 您的具体案例的另一个选择是使用MAXFLOAT. (2认同)