calc 包没有计算出正确的值

calc 包没有计算出正确的值

使用 calc 包时我得到了一个意外的结果。我只是尝试将实际值“10.01”乘以整数值“10000”,然后将结果存储在计数器中。但返回的值不是预期的“100100”,而是“100099”。

我该怎么做才能避免 calc 包出现一些错误?

以下是非常简单的使用代码:

\documentclass{article}

\usepackage{calc}

\newcounter{r}
\begin{document}
  \setcounter{r}{10000 * \real{10.01}}
  \ther
\end{document}

谢谢。

答案1

TeX 使用定点二进制算术,并且calc使用这种不能保证高精度的算术。

使用浮点数的实现可以获得更好的结果,例如expl3

\documentclass{article}
    
\ExplSyntaxOn
\NewExpandableDocumentCommand{\roundtointeger}{m}
 {
  \fp_eval:n { round ( #1, 0 ) }
 }
\ExplSyntaxOff

\newcounter{r}

\begin{document}
\setcounter{r}{\roundtointeger{10000 * 10.01}}

\ther
\end{document}

在此处输入图片描述

答案2

感谢 egreg 的回答,我找到了另一个可以解决我的问题的软件包:

\documentclass{article}

\usepackage{fp}

\newcounter{r}
\begin{document}
  \FPeval{\result}{round(10000 * 10.01,0)}
  \setcounter{r}{\result}
  \ther
\end{document}

感谢您的帮助。

相关内容