我想使用以下方法检查数字\a
(从文件读取)是否小于零ifthenelse
:
\ifthenelse{\a<5}{smaller}{not smaller}
当 a 的格式为 时,此方法可以正常工作-1
。在文件中,逗号 ( ,
) 用作小数分隔符,因此\ifthenelse
失败。
关于如何比较这种格式的数字,有什么想法吗-1,23
?
附言:我知道siunitx
也许可以做到这一点,但它似乎与之冲突csvsimple
,所以这不是一个选择。
答案1
当涉及 TeX 的长度测试时,总是可以用逗号或句点输入十进制数。
另一方面,\ifthenelse
比较的标准测试整数数字。所以我们需要做不同的事情:
\ifthenelse{\lengthtest{\a pt < 0pt}}{smaller}{not smaller}
就可以了,因为\a
将扩展为十进制数,并将单位点添加到其中将得到一个合法的长度来与之进行比较0pt
。
不强制使用0pt
:任何长度都可以。因此,如果测试必须比较给定的数字是否小于1.23
,
\ifthenelse{\lengthtest{\a pt < 1.23pt}}{smaller}{not smaller}
就可以了。当然,这样可以正确比较小数部分较短的数字(TeX 可以正确比较到小数点后第四位,但由于内部二进制算法带有截断,第五位可能无法识别)。
可以安全地使用逗号或句点来分隔小数部分。