Я пытаюсь выполнить деление, и иногда это срабатывает, а иногда я получаю неожиданный результат.
\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
(no \relax
), поэтому, когда вы используете их в другом \numexpr
, выражение фактически вставляется буквально, поэтому вы можете оценить, 5-1/2
когда вы намеревались (5-1)/2
. Я предлагаю вам поставить \relax
в конце и то, и \extatend
другое \resultrest
.
Другие альтернативы — определить их, включая скобки, или, если вам нужно только одно фиксированное значение, определить их с помощью \edef
.
Вы не говорите, какое неожиданное значение вы получаете для каждого входного параметра, поэтому остается вероятность, что вы просто не ожидали целочисленного деления.