# Simple arithmetic in an exam

How can I do some simple calculations in LaTeX?

Specifically, I want to divide \numpoints (part of the exam package) by 1.10. That is, I want to do something like this:

Grade: \underline{\hspace{2cm}} out of \numpoints<DIVIDED BY 1.1> (points available \numpoints).

• Packages \calc, calculator and the pgfmath utilities might help. – user31729 Apr 18 '15 at 21:36
• In addition, you should be more specific about the particular needs – user31729 Apr 18 '15 at 21:41

## 1 Answer

Using expl3 it's really simple:

\documentclass[addpoints]{exam}
\usepackage{expl3}
\ExplSyntaxOn
\cs_new_eq:NN \calc \fp_eval:n
\ExplSyntaxOff
\makeatletter
\newcommand{\calcnumpoints}{\@ifundefined{exam@numpoints}{0}{\exam@numpoints}}
\makeatother
\begin{document}

\begin{questions}
\titledquestion{First Question}[5]
\titledquestion{Second Question}[5]
\titledquestion{Third Question}[2]
\titledquestion{Fourth Question}[2]
\end{questions}

\numpoints

\calc{round(\calcnumpoints/1.1,1)}

\end{document}


\calc performs any floating point calculation, which in the above case is rounded to one decimal. Since \numpoints outputs somewhat like a reference (?? if it doesn't exist and \exam@numpoints otherwise), I've made an alternative definition \calcnumpoints which defaults to 0 if \exam@numpoints is not yet defined. This way you can use it in calculations as expected.

• Is there a "round down", or "floor" function? I ended up with this statement: \calc{round(0.9*\numpoints,0)-1}). I'd prefer a floor statement, but cannot find much documentation on expl3 (see: ctan.org/pkg/expl3). I tried using floor. – Jeff Apr 20 '15 at 15:39
• @Jeff: This is probably because \exam@numpoints was undefined. I've updated my answer to use a different \calcnumpoints that you can use in calculations. Now, if you want to see the floor, use floor(...,n). The argument n of floor implies a round down (towards negative infinity) to the nearest 10^n. – Werner Apr 20 '15 at 16:19