gnuplot:如何与NaN进行比较?

时间:2019-01-10 10:01:18

标签: gnuplot nan

这里有一些与此相关的主题(使用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 :(得分:0)

只是为了不让这个问题出现而未解决...

一种比较变量a是否为NaN(至少在gnuplot中)并对其进行处理的最简单方法:

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

在SO上关于某些编程语言的讨论之后,人们开始辩论NaN==NaNNaN!=NaN或两者都不是。

如果要与数据中的字符串"NaN"进行比较,请参见上面的@Christoph注释。