我希望在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
,而且我们可以在这里进行可扩展的计算。)