我发现了一件我担心是 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)。