使用 LaTeX 3 对小数进行四舍五入

使用 LaTeX 3 对小数进行四舍五入

我想使用 LaTeX 3 对小数进行四舍五入;我想要类似以下内容的内容:如果我输入

\RoundingUpFunction{2.7}

它应该返回

3

作为输出。

不幸的是,我还没有花时间学习 LaTeX 3 语法,所以如果有人能告诉我如何定义这样的函数(或者如果它已经存在请告诉我它是什么),我将不胜感激。

更新

如果我尝试按以下方式使用 Marco Daniel 的答案,它仍然不起作用:

\documentclass{article}

\usepackage{pst-optic,pstricks-add}
\usepackage{xparse}

\newcommand*\Lens[1][]{%
  \psclip{%
    \psframe[linestyle=none](-\horizontal,-\vertical)(\horizontal,\vertical)
  }
  \rput(0,0){\lensSPH[#1]}
  \endpsclip
}

\ExplSyntaxOn
\NewDocumentCommand {\RoundUp} { m }
 {
  \fp_eval:n { round+(#1) }
 }
\ExplSyntaxOff

\begin{document}

\begin{figure}
\def\horizontal{1}
\def\vertical{1.7}
 \centering
  \begin{pspicture}[showgrid](-\RoundUp{\horizontal},-\RoundUp{\vertical})%
                             ( \RoundUp{\horizontal}, \RoundUp{\vertical})
   \Lens[
     lensType=CVG,
     lensWidth=1,
     lensColor=BleuVerre,
     drawing=false
   ]
  \end{pspicture}
\end{figure}

\end{document}

错误消息

! Undefined control sequence.
<argument> \LaTeX3 error: 
                           Unknown fp word a.
l.28 ...RoundUp{\horizontal}, \RoundUp{\vertical})

答案1

如果您想使用 LaTeX3,您可以使用ceil

\documentclass{article}

\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand {\RoundingUpFunction} { m }
 {
  \fp_eval:n { ceil(#1) }
 }
\ExplSyntaxOff


\begin{document}
\RoundingUpFunction{1.7}%leads to 2

\RoundingUpFunction{1.2}%leads to 2

\RoundingUpFunction{1}%leads to 1

\end{document}

与您的更新使用相关,\DeclareExpandableDocumentCommand而不是\NewDocumentCommand

答案2

如果您可以忍受不使用LaTeX 3那么您可以使用TikZ...

\documentclass{article}
\usepackage{pgfmath,pgfkeys}

\newcommand\RoundingUpFunction[1]{%
  \pgfmathparse{ceil(#1)}%
  \pgfmathprintnumber[int trunc]{\pgfmathresult}%
}

\begin{document}
\RoundingUpFunction{2.7}
\end{document}

3

相关内容