У мене є змінна ( float slope), яка іноді матиме значення nan при роздрукуванні, оскільки іноді відбувається поділ на 0.
Я намагаюся зробити інше, якщо це трапиться. Як я можу це зробити? if (slope == nan)здається, не працює.
У мене є змінна ( float slope), яка іноді матиме значення nan при роздрукуванні, оскільки іноді відбувається поділ на 0.
Я намагаюся зробити інше, якщо це трапиться. Як я можу це зробити? if (slope == nan)здається, не працює.
isnan(slope):; Swift for floatingPointType:slope.isNaN
Відповіді:
Два шляхи, які більш-менш еквівалентні:
if (slope != slope) {
// handle nan here
}
Або
#include <math.h>
...
if (isnan(slope)) {
// handle nan here
}
( man isnanнадасть вам більше інформації, або ви можете прочитати все про це в стандарті С)
Крім того, ви можете виявити, що знаменник дорівнює нулю, перш ніж робити поділ (або використовувати, atan2якщо ви просто збираєтеся використовувати atanна схилі, а не робити якісь інші обчислення).
if (foo != foo)з яким-небудь кодом, я б видав дуже чутний "WTF". isnanздається набагато чіткішим і читабельнішим методом.
isnanце набагато зрозуміліше.
x != x, якщо ви не компілюєте з -ffast-math або подібним, і в цьому випадку він розширюється до виклику __isnanfабо __isnand(оскільки x != xне працює належним чином під -ffast-math). Тому, як правило, найкраще використовувати isnan.
__isnanfі __isnandрозширює?
if(isnan(slope)) {
yourtextfield.text = @"";
//so textfield value will be empty string if floatvalue is nan
}
else
{
yourtextfield.text = [NSString stringWithFormat:@"%.1f",slope];
}
Сподіваюся, це буде працювати для вас.