
私は、生のデータをテーブルに使用し、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
と同様のセル操作を定義することができます(S
siunitx
テーブルの各列でコマンドを実行する方法)。以下の 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}