siunitx 四舍五入时进位错误? \num{89.80} 呈现为 810

siunitx 四舍五入时进位错误? \num{89.80} 呈现为 810

我发现了一件我担心是 bug 或极其愚蠢的错误:每当我要求 siunitx 渲染 时\num{89.80},按数字四舍五入,它都会将其渲染为“810”。同样,\num{898.0}结果为“8100”。经过一番探索,似乎每当对超过两位数的数字进行四舍五入时都会发生这种情况,以至于最大位数会发生变化(参见下面的其他示例),就好像“89”中的“9”四舍五入为“10”,然后将“8”递增为“9”,然后将它们连接起来。我在下面提供了一个最小示例。我运行的是 pdfTeX,版本 3.1415926-1.40.11(TeX Live 2010)和该 TeXLive 发行版中包含的 siunitx 版本。

\documentclass{article}
\usepackage{siunitx}

\sisetup{round-mode=figures}    
\begin{document}

% these all render very strangely
\num{89.80}                      % 810.
\num[round-precision=3]{89.99}   % 810.0
\num{898.0}                      % 8100.
\num{19.8}                       % 110.
\num{99.8}                       % 910.
\num{9999}                       % 91 000

% these are totally fine
\num{9.98}
\num[round-mode=off]{89.80}
\num[round-mode=places]{89.80}

\end{document}

答案1

2.0n 版本现在已经相当老旧了:根据变更日志,该版本于 2010-07-15 发布。自那时以来,已经修复了很多错误,而仅仅确定“适当的修复”看起来有点乏味。因此,我建议将您的siunitx安装更新到当前版本。这还需要更新版本的 LaTeX3 支持。您需要以下来自加拿大运输安全局

然后需要将它们安装在您的本地树中:迄今为止最简单的方法是将它们解压缩到~/texmf(假设您使用的是 Unix)。

相关内容