siunitx: ¿Cómo quitar el signo menos, si un número se redondea a cero?

siunitx: ¿Cómo quitar el signo menos, si un número se redondea a cero?

Quiero usar mis datos sin procesar en mis tablas y dejar que el paquete siunitx haga el redondeo, para poder ajustar fácilmente la precisión mostrada de mis tablas dependiendo de mis necesidades futuras. El problema es que en múltiples ocasiones un -0,00001 o algo similar se redondeará a -0,0. Aunque entiendo que en algunos campos podría ser una buena práctica mostrar desde qué dirección los números se acercan a cero, es bastante poco común en mi campo y me gustaría que todos los números redondeados a -0,0 se muestren como 0,0 sin el signo menos. .

¿Existe alguna opción específica para hacer esto? No pude encontrar nada en la documentación de 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}

Respuesta1

De hecho siunitxmantiene el signo del número original. Como alternativa, puede redondear usando pgfplots, que elimina el signo de la fixedsalida (mantiene el signo en la producción científica).

Esto se puede combinar con el collcellpaquete para definir una operación de celda similar al Stipo de columna de siunitx(verCómo ejecutar el comando en cada columna de la tabla). En el MWE a continuación, se realiza una verificación adicional para ver si el valor de la celda es numérico (del paquete xstring), para permitir encabezados de tabla. Finalmente los encabezados se centran usando una multicolumna de una columna.

Editar:Tenga en cuenta que tanto la columna múltiple (que es de tipo c) como la verificación numérica impiden \pgfmathprintnumberque se llame, solo una de ellas sería suficiente para las filas de encabezado.

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:

ingrese la descripción de la imagen aquí

Respuesta2

Podrías usar \fpeval para redondear los números y luego siunitx para formatearlos:

\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}

ingrese la descripción de la imagen aquí

información relacionada