比较以逗号作为小数点的数字

比较以逗号作为小数点的数字

我想使用以下方法检查数字\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 可以正确比较到小数点后第四位,但由于内部二进制算法带有截断,第五位可能无法识别)。

可以安全地使用逗号或句点来分隔小数部分。

相关内容