如何使用 siunitx 添加至少两位小数?

如何使用 siunitx 添加至少两位小数?

我正在尝试创建一个好的\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- 从而也忽略了tabularOP 代码中显示的内容。)

在宏的定义中\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}

相关内容