如何格式化具有一定精度的数字?

如何格式化具有一定精度的数字?

如何更改数字的精度?下面的示例将其定义\mynum为具有大量数字的数字。大多数时候,当我\mynum在文本中使用时,我希望它完全按照定义显示,但有时我可能希望用 4 位数字显示它,因此在此示例中它将显示为12.35

是否有包或预先存在的乳胶函数可以执行此操作?我能找到的有关更改数字精度的大多数内容都涉及表格和列格式,这不适用于文本中的单个数字。

\documentclass{article}
\newcommand{\mynum}{12.34567890}
\begin{document}
\mynum
\end{document}

我正在思考类似以下伪代码的事情:

\round{4}{\mynum}    % not real code

答案1

感谢@moewe 和@Steven B. Segletes 提供的软件包建议和工作示例。这是我能够整理出的解决方案。

本质上,我能够使用包\num中提供的宏siunitx以及一些适当的可选参数将数字舍入到我喜欢的任何精度级别。我可以用两种方法来实现这一点:

  • 用于round-mode=places,round-precision=2四舍五入到小数点后 2 位
  • 或者使用round-mode=figures,round-precision=4四舍五入到 4 位有效数字。

两种方法都将 12.34567890 更改为 12.35。我的代码如下,其中还包括我在问题中编写的伪代码形式的宏。

\documentclass{article}
\usepackage{siunitx}
\newcommand{\mynum}{12.34567890}
\newcommand{\round}[2]{\num[round-mode=places,round-precision=#1]{#2}}

\begin{document}

\mynum

\round{2}{\mynum}

\num[round-mode=figures,round-precision=4]{\mynum}

\end{document}

该代码的输出是:

12.34567890
12.35
12.35

相关内容