我正在尝试创建一个好的\EUR
命令,根据 DIN5008 显示.
带有千位分隔符和,
小数点且至少有两位小数的值。但是,如果给出的小数位更多,则应该显示更多。
\documentclass{scrlttr2}
\usepackage[ngerman]{babel}
\usepackage[scaled]{helvet}
\renewcommand\familydefault{\sfdefault}
\usepackage[detect-all, separate-uncertainty]{siunitx}
\sisetup{group-minimum-digits = 4, group-separator = {~}, locale=DE}
\RequirePackage{xspace}
\newcommand{\EUR}[1]{
\num[group-separator = {.}, round-precision = 2, round-mode = places]{#1}~\unit{€}\xspace}
\begin{document}
\begin{tabular}{lS[table-format=5.2]r}
Description A & 123 & \EUR{1234.5678}\\
Description B & 1.2 & \EUR{12.3}\\
Description C & 12.3 & \EUR{123}\\
Description D & 12.34 & \EUR{12345.678901}\\
Description E & 12345 & \EUR{12345678.9}\\
\end{tabular}
\end{document}
我只能四舍五入到固定的 2 位数字,而不能完全不四舍五入,而只能显示至少 2 位小数(即使提供的数字更少),如果提供的数字更多,则显示更多......可以做到这一点吗?
答案1
(在收到 OP 的补充信息后,我修改了这个答案。在意识到答案应该只关注宏的属性后,我进一步修改了它\EUR
- 从而也忽略了tabular
OP 代码中显示的内容。)
在宏的定义中\EUR
,您需要替换
round-precision = 2, round-mode = places
和
minimum-decimal-digits=2
\documentclass{scrlttr2}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[scaled]{helvet}
\renewcommand\familydefault{\sfdefault}
\usepackage{siunitx}
\sisetup{mode=text, %detect-all,
separate-uncertainty,
group-minimum-digits = 4,
group-separator = {\,},
locale=DE}
\newcommand{\EUR}[1]{%
\num[group-separator = {.}, minimum-decimal-digits=2]{#1}\,\unit{€}}
\begin{document}
\EUR{123}
\EUR{123.45}
\EUR{12345.678912}
\end{document}