siunitx: 数値がゼロに丸められた場合、マイナス記号を削除するにはどうすればよいでしょうか?

siunitx: 数値がゼロに丸められた場合、マイナス記号を削除するにはどうすればよいでしょうか?

私は、生のデータをテーブルに使用し、siunitx パッケージで丸め処理を行い、将来のニーズに応じてテーブルの表示精度を簡単に調整できるようにしたいと考えています。問題は、-0.00001 または類似の数値が -0.0 に丸められることが何度もあることです。一部の分野では、数値がどの方向からゼロに近づくかを示すのがよい方法であることは理解していますが、私の分野ではそれは非常にまれであり、-0.0 に丸められたすべての数値をマイナス記号なしの 0.0 として表示したいと考えています。

これを行うための特定のオプションはありますか? 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}

答え1

実際、siunitx元の数値の符号は保持されます。 代わりに、 を使用して丸めることができます。pgfplotsこれにより、出力の符号が削除されますfixed(科学的出力では符号が保持されます)。

これをパッケージと組み合わせて、列タイプcollcellと同様のセル操作を定義することができます(Ssiunitxテーブルの各列でコマンドを実行する方法)。以下の MWE では、セル値が数値であるかどうかを確認する追加のチェック (パッケージ からxstring) が実行され、テーブル ヘッダーが許可されます。最後に、1 列の複数列を使用してヘッダーが中央揃えされます。

編集:複数列 (タイプc) と数値チェックの両方が\pgfmathprintnumber呼び出されないようにすることに注意してください。ヘッダー行にはそのうちの 1 つだけで十分です。

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}

結果:

ここに画像の説明を入力してください

答え2

\fpeval を使用して数値を丸め、siunitx を使用してフォーマットすることができます。

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

ここに画像の説明を入力してください

関連情報