我正在尝试执行除法,有时它可以有效,但有时我会得到意想不到的值。
\documentclass[fleqn]{article}
\usepackage{amsmath}
\usepackage{enumerate}
\usepackage{cancel}
\begin{document}
\newcommand\coeff{5}
\newcommand\addend{13}
\newcommand\result{45}
\newcommand\exaddend{\the\numexpr\addend*\coeff}
\newcommand\resultrest{\the\numexpr\result-\exaddend}
\begin{align*}
\coeff x+\exaddend&=\result \\
-\exaddend&=-\exaddend\\
\coeff x&=\resultrest\\
\frac{\cancel{\coeff}x}{\cancel{\coeff}}&=\frac{\resultrest}{\coeff}\\
x&=\boxed{\the\numexpr\resultrest/\coeff\relax}
\end{align*}\vspace{1em}
\end{document}
如果我使用固定值,它就会起作用:
最后一行似乎\the\numexpr\resultrest/\coeff\relax
产生了问题。请帮忙!
答案1
您定义的\extatend
和\resultrest
未终止\numexpr
(无\relax
),因此当您在另一个中使用它们时\numexpr
,表达式实际上是按字面意思插入的,因此您可以5-1/2
在需要时进行评估(5-1)/2
。我建议您将和放在\relax
末尾。\extatend
\resultrest
其他替代方法是使用括号来定义它们,或者如果您只想要一个固定值,则使用来定义它们\edef
。
您没有说出对于哪个输入您会得到什么意外值,因此仍然存在您只是没有预料到整数除法的可能性。