如何更改表中各行的舍入精度?

如何更改表中各行的舍入精度?

我使用 siunitx 包来打印表格。在下表中,我希望每行具有不同的舍入精度和打印的小数位数。

\usepackage{siunitx}
\sisetup{   
        round-mode      = places,
        round-precision = 3,
        group-separator = {,},
        }
\begin{tabular}{l*{2}{S}}
        & A         & B     \\
Row 1   & 3.22222   & 5.66666   \\
Row 2   & 1.44444   & 9.99999   \\
\end{tabular}

例如,我希望在第 1 行打印 3 位小数,在第 2 行打印 1 位小数。

有没有办法调整从第 1 行到第 2 行的舍入精度以及要打印的小数位数?

答案1

这个答案描述了一种在表格环境中定义单行通用样式的方法。从此开始,我定义了一个命令来设置单行的精度:

  • 需要将列类型P(表示:精度)作为第一个“列”。它在每行开始时将精度设置回默认值。
  • 必须将列类型^放在应应用此精度的每个列之前。它会调用\sisetup这些列的每个单元格。
  • 然后,可以在表格行的开始处使用该宏\rowprecision将精度设置为作为单个参数给出的值。

你的例子:

\documentclass{article}

\usepackage{siunitx}
\usepackage{xifthen}
\sisetup{round-mode      = places,
         round-precision = 3,
         group-separator = {,}}
\usepackage{array}
\newcolumntype{P}{>{\global\let\currentprecision\relax}}
\newcolumntype{^}{>{\ifthenelse{\isequivalentto{\currentprecision}{\relax}}{}{\currentprecision}}}
\newcommand{\rowprecision}[1]{\gdef\currentprecision{\sisetup{round-precision=#1}}}

\begin{document}

\begin{tabular}{Pl*{2}{^S}}
    & A & B \\
    \rowprecision{4} Row 1 & 3.22222 & 5.66666   \\
    \rowprecision{2} Row 2 & 1.44444 & 9.99999   \\
\end{tabular}

\end{document}

在此处输入图片描述

相关内容