l3fp 在数学计算中保留尾随零

l3fp 在数学计算中保留尾随零

我希望在l3fp打印用于内部计算的数据时保留尾随零。例如:

\documentclass{article}
\usepackage{siunitx}
\usepackage{expl3}
\pagestyle{empty}
\ExplSyntaxOn
\NewDocumentCommand{\calcnumd}{o m}{\num[#1]{\fp_to_decimal:n{#2}}}
% 
\fp_set:Nn \gpcinque {305.0}
\fp_set:Nn \gptre {272.3}
\ExplSyntaxOff 

\begin{document}

\calcnumd{\gpcinque * sin(pi/2)}\,\si{\kilo\gram}

\calcnumd{\gptre}\,\si{\kilo\gram}

\end{document}

将打印 272.3 kg 和 305 kg,而不是 305.0 kg。有没有办法避免修剪尾随零?

答案1

FPU 在输入中没有“有效零”的概念:内部所有内容都转换为标准形式。如果您想强制使用一些位数或有效数字,则需要在输出时这样做:

\documentclass{article}
\usepackage{siunitx}
\usepackage{expl3}
\pagestyle{empty}
\ExplSyntaxOn
\cs_new_eq:NN \fpeval \fp_eval:n
\fp_set:Nn \gpcinque {305.0}
\fp_set:Nn \gptre {272.3}
\ExplSyntaxOff 

\begin{document}

\SI{\fpeval{\gpcinque * sin(pi/2)}}{\kilo\gram}

\SI[round-mode = places, round-precision = 1, round-integer-to-decimal]
  {\fpeval{\gpcinque * sin(pi/2)}}{\kilo\gram}

\SI[round-mode = figures, round-precision = 4, round-integer-to-decimal]
  {\fpeval{\gpcinque * sin(pi/2)}}{\kilo\gram}

\end{document}

如果是通用的,您可以在序言中设置舍入方法。

(我已经使用过\SI,而且我们可以在这里进行可扩展的计算。)

相关内容