使用 siunitx 将不确定度四舍五入到大于数字的位置

使用 siunitx 将不确定度四舍五入到大于数字的位置

我对siunitx包。在某些情况下,舍入不正确(逗号的位置不正确,请参阅下面我提供的 MWE)。

你有什么建议吗?

\documentclass[12pt, a4paper]{scrartcl}

\usepackage{siunitx}
\sisetup{round-mode=uncertainty, uncertainty-mode = separate, round-precision=3}

\begin{document}
Hello, this is a test with the package siuntix:

\num{0.478747 \pm 0.231349} (correct rounding)

\num{0.266548 \pm 10.8466}

The correct output should be instead: 0.3\,\pm \,10.8
\end{document}

答案1

的下一个版本siunitx将检查是否有足够的数字来对不确定度进行舍入以给出非零结果。目前,使用:

\cs_gset:Npn \__siunitx_number_round_uncertainty:nnn #1#2#3
  {
     \__siunitx_number_round_uncertainty_check:nnnw {#1} {#2} {#3}
       #1#2 \q_recursion_tail \q_recursion_stop
  }
\cs_new:Npn \__siunitx_number_round_uncertainty_check:nnnw #1#2#3#4
  {
    \quark_if_recursion_tail_stop_do:Nn #4 { { 0 } { } { } }
    \int_compare:nNnTF {#4} = 0
      { \__siunitx_number_round_uncertainty_check:nnnw }
      { \__siunitx_number_round_uncertainty_check:Nnnnw #4 }
        {#1} {#2} {#3}
  }
\cs_new:Npn \__siunitx_number_round_uncertainty_check:Nnnnw #1#2#3#4#5
  \q_recursion_tail \q_recursion_stop
  {
    \int_compare:nNnTF { \tl_count:n {#1#5} } < { \tl_count:n {#4} }
      { { 0 } { } { } }
      {\__siunitx_number_round_uncertainty_aux:nnn {#2} {#3} {#4} }
  }
\cs_gset:Npn \__siunitx_number_round_uncertainty_aux:nnn #1#2#3
  {
    \exp_args:Nf \__siunitx_number_round_uncertainty:nnnn
      {
        \int_eval:n
          { \tl_count:n {#3} - \l__siunitx_number_round_precision_int }
      }
      {#1} {#2} {#3}
  }

(请注意,这确实不是给出你的“预期”结果,但这是错误的,因为不确定性使得数据中没有有用的价值。)

相关内容