Как сравнить строку с плавающей точкой? в цели C - PullRequest
0 голосов
/ 03 апреля 2010

Как бы вы? У меня проблемы. Спасибо.

Я сейчас использую

if (myString == myfloat) {
// do something but this won't work
}

ИЛИ

if ([myString == myFloat]) {
// do something but this won't work
}

Спасибо!

1 Ответ

6 голосов
/ 03 апреля 2010

Оператор == имеет смысл только тогда, когда оба типа совместимы, что не относится к строкам и числам с плавающей запятой. Одна сторона должна быть явно преобразована в другую.

Вы можете конвертировать NSString в число с плавающей точкой:

if ([myString floatValue] == myFloat) {
  // Note: Use "fabs(a - b) < epsilon" to avoid inequality due to precision lost.

или преобразовать число с плавающей точкой в ​​строку NSS (очень необычно):

if ([myString isEqualToString:[NSString stringWithFormat:@"%g", myFloat]]) {
  // Note: make sure the string is encoded as "%g" as well.
...