gnuplot: как сравнить с NaN? - PullRequest
       8

gnuplot: как сравнить с NaN?

0 голосов
/ 10 января 2019

Здесь есть несколько тем (в javascript, c ++, ...), но еще не найдено ни одной для gnuplot.

По сути, я хочу заменить "nan" на "---" в ярлыках.

Я знаю, что могу установить NaN = "---", но тогда NaN ведет себя как строка, и другой код необходимо адаптировать.

### How to compare to NaN?
NaN = GPVAL_NaN  # default value for NaN

a = NaN
print (a==NaN ? "---" : sprintf("%g",a))
print (a==NaN ? sprintf("%g",a) : "---")
print (a!=NaN ? "---" : sprintf("%g",a))
print (a!=NaN ? sprintf("%g",a) : "---")

a = 123
print (a==NaN ? "---" : sprintf("%g",a))
print (a==NaN ? sprintf("%g",a) : "---")
print (a!=NaN ? "---" : sprintf("%g",a))
print (a!=NaN ? sprintf("%g",a) : "---")
### end of code

Результат:

NaN
---
NaN
---
123
---
123
---

Итак, ни одна из комбинаций не справляется с работой.

Наконец, я обнаружил, что, похоже, работает следующее.

print (a/a == 1 ? sprintf("%g",a) : "---")

Мои вопросы:

Будет ли a/a всегда равным 1 или могут быть ошибки округления в особых случаях? Это "тот" способ, как это сделать, или я что-то упустил?

1 Ответ

0 голосов
/ 11 января 2019

только ради того, чтобы этот вопрос не оставался без ответа ...

Вероятно, самый простой способ сравнить, если переменная a равна NaN или нет (по крайней мере, в gnuplot), и что-то с ней сделать:

print (a == a ? sprintf("%g",a) : "---")

После некоторых обсуждений некоторых языков программирования здесь, в SO, люди обсуждают вопрос о NaN==NaN или NaN!=NaN или ни о одном из них.

А в случае сравнения со строкой "NaN" в данных: см. Комментарий @ Кристофа выше.

...