
Quero usar meus dados brutos em minhas tabelas e deixar o pacote siunitx fazer o arredondamento, para que eu possa ajustar facilmente a precisão mostrada em minhas tabelas dependendo de minhas necessidades futuras. O problema é que em várias ocasiões -0,00001 ou algo semelhante será arredondado para -0,0. Embora eu entenda que em alguns campos pode ser uma boa prática mostrar de que direção os números se aproximam de zero, isso é bastante incomum em meu campo e eu gostaria que todos os números arredondados para -0,0 fossem exibidos como 0,0 sem o sinal de menos .
Existe uma opção específica para fazer isso? Não consegui encontrar nada na documentação do siunitx.
\documentclass{article}
\usepackage{siunitx}
\usepackage{booktabs, tabularx}
\begin{document}
\sisetup{round-mode=places}
\centering
\begin{tabular}{
*2{S[round-precision=1]}
}\toprule
{A} & {B}\\\midrule
-0.0000001 & 2.5823\\
-2.5823 & 0.0000001\\\bottomrule
\end{tabular}
\end{document}
Responder1
Na verdade siunitx
mantém o sinal do número original. Como alternativa, você pode arredondar usando pgfplots
, o que remove o sinal da fixed
saída (mantém o sinal na produção científica).
Isto pode ser combinado com o collcell
pacote para definir uma operação de célula semelhante ao S
tipo de coluna de siunitx
(vejaComo executar o comando em todas as colunas da tabela). No MWE abaixo é realizada uma verificação adicional para ver se o valor da célula é numérico (do pacote xstring
), para permitir cabeçalhos de tabela. Finalmente, os cabeçalhos são centralizados usando uma multicoluna de uma coluna.
Editar:Observe que a multicoluna (sendo type c
) e a verificação numérica impedem \pgfmathprintnumber
que sejam chamadas, apenas uma delas seria suficiente para as linhas de cabeçalho.
MWE:
\documentclass{article}
\usepackage{collcell}
\usepackage{pgfplots}
\usepackage{xstring}
\newcommand{\roundsign}[1]{\IfDecimal{#1}{\pgfmathprintnumber[fixed,fixed zerofill,precision=1]{#1}}{#1}}
\newcolumntype{S}{>{\collectcell\roundsign}{r}<{\endcollectcell}}
\begin{document}
\begin{tabular}{S S}
\multicolumn{1}{c}{A} & \multicolumn{1}{c}{B}\\
\hline
-0.0000001 & 2.5823\\
\hline
-2.5823 & 0.0000001\\
\hline
\end{tabular}
\end{document}
Resultado:
Responder2
Você poderia usar \fpeval para arredondar os números e depois siunitx para formatá-los:
\documentclass{article}
\usepackage{siunitx,xfp}
\usepackage{booktabs, tabularx}
\begin{document}
\sisetup{round-mode=places,round-integer-to-decimal}
\centering
\begin{tabular}{
*2{S[round-precision=1]}
}\toprule
{A} & {B}\\\midrule
\fpeval{round(-0.0000001,1)} & \fpeval{round(2.5823,1)}\\
\fpeval{round(-2.5823,1)} & \fpeval{round(0.0000001,1)}\\\bottomrule
\end{tabular}
\end{document}