siunitx: Como remover o sinal de menos, se um número for arredondado para zero?

siunitx: Como remover o sinal de menos, se um número for arredondado para zero?

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 siunitxmantém o sinal do número original. Como alternativa, você pode arredondar usando pgfplots, o que remove o sinal da fixedsaída (mantém o sinal na produção científica).

Isto pode ser combinado com o collcellpacote para definir uma operação de célula semelhante ao Stipo 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 \pgfmathprintnumberque 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:

insira a descrição da imagem aqui

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}

insira a descrição da imagem aqui

informação relacionada