我想让 550 万这样的数字以逗号作为千位分隔符显示为“5,500,000”。有没有办法自动完成此操作,而无需手动输入逗号?
答案1
我觉得siunitx
包中有此类设施。
\num[group-separator={,}]{1234567890}
应该给你 1,234,567,890
您也可以将其用作包选项,如下所示:\usepackage[group-separator={,}]{siunitx}
请注意,这似乎不适用于旧版本的siunitx
答案2
Seamus 的回答siunitx
是正确做法。话虽如此,编写一个简单的宏来漂亮地打印数字并不难。
\newcount\ppnum
\newcommand\ppnumber[1]{%
\ppnum=#1\relax
\ifnum\ppnum<0
$-$%
\ppnum=-\ppnum
\fi
\let\pptemp\empty
\loop\ifnum\ppnum>999
\count255=\ppnum
\divide\ppnum by1000
\count255=\numexpr \count255 - 1000*\ppnum \relax
\edef\pptemp{,\ifnum\count255<100 0\ifnum\count255<10 0\fi\fi
\the\count255 \pptemp}%
\repeat
\the\ppnum
\pptemp
}
我第一次写这个的时候,使用了令牌寄存器而不是\pptemp
,但是这需要书写\expandafter\expandafter\expandafter{\expandafter...
,这似乎过多了。
编辑:
鉴于我现在必须修复代码中的两个错误,也许我不应该声称做到这一点并不难。=)
答案3
使用http://www.ctan.org/pkg/numprint包装\npthousandsep{,}
可能是一种替代方案(在写完另一个答案后发现——墨菲定律!)。
顺便说一句:将数字分组为二可以用http://www.ctan.org/pkg/telprint包裹。
答案4
我通常只在我的文档中使用一次,并且不想为一些额外的包烦恼,所以我发现下面的是一个非常有用的技巧:
$50{\small,}000$