将两个浮点数的乘积传递给宏

将两个浮点数的乘积传递给宏

我有一个宏

\mywonderfulmacro{...}

期望用普通浮点数代替...。(例如,

\mywonderfulmacro{4.51}

是有效的。)现在我想做这样的事情:

\def\a{1.2}
\def\b{1.3}
\mywondefulmacro{\a * \b}

当然,我们希望上述代码能够

\mywonderfulmacro{1.56}

正在评估。不幸的是,TeX 不能这样工作,所以我得到了一个错误!

正确/最简单的方法是什么?

附言:我知道,只要有足够的辨别力,答案肯定隐含在这个论坛以前的问题/答案中,但我的专业知识很少,所以我需要一个在特定情况下解决这个特定问题的答案,而不是指向一些技术帖子之\the \numexpr类的 :/

答案1

该包提供对浮点“库”xfp的访问,宏用于此类计算。它是可扩展的。expl3 fp\fpeval

\numexpr\anumber*\bnumber顺便说一句,它不起作用。

\documentclass{article}

\usepackage{xfp}

\def\anumber{1.2}
\def\bnumber{1.3}

\newcommand{\mywonderfulmacro}[1]{\fpeval{#1}}

\begin{document}


\mywonderfulmacro{\anumber * \bnumber}


\end{document}

答案2

我找到

\pgfmathsetmacro{\theproduct}{\a*\b}
\mywonderfulmacro{\theproduct}

将工作。

任何其他解决方案/见解都值得赞赏!

相关内容