带有以非整数为条件的 if/then 语句的新命令?

带有以非整数为条件的 if/then 语句的新命令?

在 LaTeX 中,如何声明一个新命令,该命令根据非整数测试的结果给出不同的输出?具体来说,我想要一个命令来将数字与 0.01 进行比较(这些数字来自不同的脚本):如果数字大于或等于 0.01,则打印p = 0.45(或 p 的任何数字);如果数字小于 0.01,则打印p < 0.01

我已经查看过ifnumlessetoolbox它只需要整数和维度。

我该如何使用带小数点的数字来做到这一点?谢谢。

答案1

您几乎已经到达...如果您想比较实数,则必须比较维度,因此请使用\ifdimless而不是\ifnumless像以下示例中那样:

\documentclass{article}
\usepackage{etoolbox}

\newcommand{\checknum}[1]{%
  \ifdimless{#1pt}{.01pt}{$p < 0.01$}{$p = #1$}%
}

\begin{document}

\checknum{0.45}

\checknum{0.01}

\checknum{0.005}

\end{document}

在此处输入图片描述

答案2

您可以使用l3fpLaTeX3的模块:

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\fpcompare}{mmm}
 {
  \fp_compare:nTF { #1 } { #2 } { #3 }
 }
\ExplSyntaxOff

\begin{document}

\newcommand{\checknum}[1]{%
  \fpcompare{#1 < .01}{$p < 0.01$}{$p = #1$}%
}

\checknum{0.45}

\checknum{0.01}

\checknum{0.005}

\renewcommand{\checknum}[1]{%
  \fpcompare{#1 >= .01}{$p = #1$}{$p < 0.01$}%
}

\checknum{0.45}

\checknum{0.01}

\checknum{0.005}

\end{document}

我举了两次例子,说明比较运算符可以是<=>,也可以是<=>=。结果是一样的,因为两个最后的参数互换了。

在此处输入图片描述

相关内容