使用千位分隔符来格式化长数字?

使用千位分隔符来格式化长数字?

在大多数语言中,长数字被分成三位数字的组,以提高可读性。

在荷兰语(我的母语)中,1000000通常写为1 000 000。在英语中,这将是1,000,000

现在,我想知道如何在 LaTeX 中使用这种格式。我在谷歌上搜索,但我只找到一些文章解释如何将很长的数字拆分成多行,这不是我需要的。

有没有可以自动执行此操作的软件包?或者我可以使用某个标签来实现此目的?

答案1

\,如果您手动输入,则可以使用较窄的空间:$1\,000\,000$

您还可以使用以下包siunitx,它会自动插入适当的分隔符和间距:\num{100000}

您应该使用哪一个取决于您想要做什么(以及数字在哪里生成);无论是手写文本中的几个数字,还是在表格数据中排版数千个数字,而手动编辑以添加分组分隔符实际上并不是一个选择。

答案2

有一个很好的软件包可以解决所有这些与数字格式有关的问题,无论是在文本中还是在表格中:\usepackage{numprint}。请学习手动的,它提供了很多详细信息。您通常可以通过texdoc numprint命令行获取手册。

numprint 的一个小型 MWE 可以回答您的问题:

\documentclass[english]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{numprint}
\npthousandsep{\,}

\begin{document}

This would be a line with a price tag: \numprint{1000000} EUR.

And as a tabular: 
\begin{tabular}{N{7}{0}}
  1000000 {~EUR}\\
\end{tabular}
\end{document}

我们得到这个:

numprint 示例

如您所见,只需告诉 numprint 千位分隔符应该是什么样子。您可以做更多事情,例如四舍五入数字

答案3

对于 TeX 宏程序员来说,这是非常有趣的练习。我的结果是这样的:

\def\num #1{\numA#1\empty\empty\empty#1\end}
\def\numA #1#2#3{%
   \ifx #1\empty \afterelax{\numB}\fi
   \ifx #2\empty \afterelax{\numB{}}\fi
   \ifx #3\empty \afterelax{\ea\numB\ignoreit}\fi
   \ea \numA \ignoreit \relax
}
\def\numB #1#2#3#4{#1#2#3\ifx#4\end\else \numseparator \ea\numB\ea#4\fi}

\def\afterelax#1#2\relax{\fi#1}
\def\ignoreit#1{}
\let\ea=\expandafter

\def\numseparator{,}

Test: number \num{1234567}

\num是可扩展的。

答案4

使用包“Ziffer”,如果您想将 100000 写成“100.000,00”,它将显示“10 000,00”(逗号后没有空格,用空格代替点)

相关内容