如何对表格中的数字进行四舍五入?

如何对表格中的数字进行四舍五入?

由于我是初学者,如果我的问题措辞不当,请原谅。我在 Latex 中有一个表格,其数据最初是使用 Python 生成的。然后我使用 tablesgenerator.com 正确格式化数据并转换为 Latex 代码。

一切都很顺利。但是,现在我需要将表格中的数字四舍五入(一列保留 3 位小数,其余列保留 2 位小数)。我在网上找到了一些资源,包括之前在这个社区提出的问题。但是,我无法成功实现这些想法(尝试使用 numprint 和 siunitx)。如果有人能帮助我做到这一点,我将不胜感激。

以下是一个例子:

% Please add the following required packages to your document preamble:
% \usepackage{multirow}
\begin{table}[]
\adjustbox{max width=\textwidth}{%
\begin{tabular}{|l|rrrr|rr|rr|rr|rr|}
\hline
\multirow{3}{*}{Object}          & \multicolumn{4}{c}{Scenario 1}                                                                                 & \multicolumn{4}{c|}{Scenario 2}                                                                               & \multicolumn{4}{c|}{Scenario 3}                                                                             \\ \cline{2-13} 
                                     & \multicolumn{2}{c}{Model 1}                 & \multicolumn{2}{c|}{Model 2}              & \multicolumn{2}{c|}{Model 1}                & \multicolumn{2}{c|}{Model 2}              & \multicolumn{2}{c|}{Model 1}                & \multicolumn{2}{c|}{Model 2}              \\ \cline{2-13} 
                                     & \multicolumn{1}{c}{Stat 1} & \multicolumn{1}{c|}{Stat 2} & \multicolumn{1}{c}{Stat 1} & \multicolumn{1}{c|}{Stat 2} & \multicolumn{1}{c}{Stat 1} & \multicolumn{1}{c|}{Stat 2} & \multicolumn{1}{c}{Stat 1} & \multicolumn{1}{c|}{Stat 2} & \multicolumn{1}{c}{Stat 1} & \multicolumn{1}{c|}{Stat 2} & \multicolumn{1}{c}{Stat 1} & \multicolumn{1}{c|}{Stat 2} \\ \hline
$a$                   & 49.143                  & \multicolumn{1}{r|}{0.81}     & 49.143                  & 49.143                          & 18.121                  & 41.143                         & 49.143                  & 47.143                         & 23.143                   & 49.143                         & 49.143                   & 59.143                         \\
$b$      & 52.411                  & \multicolumn{1}{r|}{0.231}    & 49.143                  & 49.143                          & 18.121                  & 41.143                         & 49.143                  & 47.143                         & 23.143                   & 49.143                         & 49.143                   & 59.143                         \\ \hline
\end{tabular}}
\end{table}

桌子

具体来说,我该如何将所有 Stat 1 列四舍五入到小数点后 2 位,并将所有 Stat 2 列四舍五入到小数点后 3 位(上表中已经是这种情况,但假设情况并非如此)?

注意:我的实际表格有数百行,因此手动编辑数字是不可能的。

感谢您的帮助!

答案1

您可以这样使用siunitx选项table-auto-round与 结合使用table-format,以确定表格中的数字四舍五入和对齐的小数位数。

\multirow我还通过删除不必要的命令并\multicolumn在标题行中添加缺失的垂直线来简化代码。最后,我删除adjustbox并减小了字体大小和值,\tabcolsep以使表格不那么宽。

此外,我添加了booktabs基于 的表格版本,其中不使用垂直线,而是使用一些水平线,间距有所改善。通过缩写长单词稍微改变第一列的标题,也可以使用稍大的字体大小,同时仍保持与第一个示例大致相同的宽度:

在此处输入图片描述

\documentclass{article}
\usepackage{geometry}
\usepackage{siunitx}

\usepackage{booktabs}

\begin{document}

\begin{table}
\footnotesize
\setlength{\tabcolsep}{4.75pt}
\sisetup{table-auto-round}
\begin{tabular}{|l|*{6}{S[table-format=2.2]S[table-format=2.3]|}}
\hline
 & \multicolumn{4}{c|}{Scenario 1} & \multicolumn{4}{c|}{Scenario 2} & \multicolumn{4}{c|}{Scenario 3} \\ \cline{2-13} 
 Object & \multicolumn{2}{c|}{Model 1}  & \multicolumn{2}{c|}{Model 2}              
  & \multicolumn{2}{c|}{Model 1} & \multicolumn{2}{c|}{Model 2}              
  & \multicolumn{2}{c|}{Model 1} & \multicolumn{2}{c|}{Model 2} \\ \cline{2-13} 
  & {Stat 1} & {Stat 2} & {Stat 1} & {Stat 2} 
  & {Stat 1} & {Stat 2} & {Stat 1} & {Stat 2} 
  & {Stat 1} & {Stat 2} & {Stat 1} & {Stat 2} \\ \hline
$a$   & 49.143 & 0.81  & 49.143 & 49.143 & 18.121 & 41.143 & 49.143 & 47.143 & 23.143 & 49.143 & 49.143 & 59.143 \\
$b$   & 52.411 & 0.231 & 49.143 & 49.143 & 18.121 & 41.143 & 49.143 & 47.143 & 23.143 & 49.143 & 49.143 & 59.143 \\ \hline
\end{tabular}
\end{table}


\begin{table}
\small
\centering
\setlength{\tabcolsep}{4.25pt}
\sisetup{table-auto-round}
\begin{tabular}{@{}l*{6}{S[table-format=2.2]S[table-format=2.3]}@{}}
\toprule
 Obj. & \multicolumn{4}{c}{Scenario 1} & \multicolumn{4}{c}{Scenario 2} & \multicolumn{4}{c}{Scenario 3} \\ 
\cmidrule(r){2-5} \cmidrule(lr){6-9} \cmidrule(l){10-13} 
  & \multicolumn{2}{c}{Model 1}  & \multicolumn{2}{c}{Model 2}              
  & \multicolumn{2}{c}{Model 1} & \multicolumn{2}{c}{Model 2}              
  & \multicolumn{2}{c}{Model 1} & \multicolumn{2}{c}{Model 2} \\ 
\cmidrule(r){2-3} \cmidrule(lr){4-5} \cmidrule(lr){6-7}  \cmidrule(lr){8-9} \cmidrule(lr){10-11} \cmidrule(l){12-13}
  & {Stat 1} & {Stat 2} & {Stat 1} & {Stat 2} 
  & {Stat 1} & {Stat 2} & {Stat 1} & {Stat 2} 
  & {Stat 1} & {Stat 2} & {Stat 1} & {Stat 2} \\ \midrule
$a$   & 49.143 & 0.81  & 49.143 & 49.143 & 18.121 & 41.143 & 49.143 & 47.143 & 23.143 & 49.143 & 49.143 & 59.143 \\
$b$   & 52.411 & 0.231 & 49.143 & 49.143 & 18.121 & 41.143 & 49.143 & 47.143 & 23.143 & 49.143 & 49.143 & 59.143 \\ \bottomrule
\end{tabular}
\end{table}
\end{document}

相关内容