我们现在知道 (-3)^2+(-4)^2 的平方根是 25 的平方根,等于 5。然而,我们在调用 xfp 包和 Tikz 时收到一个奇怪的错误,提示:
\LaTeX3 错误:无效运算 sqrt(-25) 以下是代码:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{xfp}
\begin{document}
\begin{tikzpicture}
\edef\u{-3};
\edef\v{-4};
\edef\w{\fpeval{sqrt(\fpeval{\u^2}+\fpeval{\v^2})}};
\node at (0,0) {Ans=\fpeval{\w}};
\end{tikzpicture}
\end{document}
答案1
你\u
不是一个“变量”,而是一个宏,TeX 会对其进行扩展,这样你就得到了
\u^2
→ -3^2
→-9
使用(\u)^2
。顺便说一下
\edef\w{\fpeval{sqrt((\u)^2+(\v)^2)}}
效率更高。而且你不需要\fpeval{\w}
,只要就\w
足够了。
答案2
运算顺序...指数运算优先于负数运算。因此,必须明确地(通过括号)对负数进行分组,以免 -3^2 被计算为 -9。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{xfp}
\begin{document}
\begin{tikzpicture}
\def\u{(-3)};
\def\v{(-4)};
\edef\w{\fpeval{sqrt(\fpeval{\u^2}+\fpeval{\v^2})}};
\node at (0,0) {Ans=\fpeval{\w}};
\end{tikzpicture}
\end{document}