Hallo,

das schöne Beispiel von Herbert hier

Code:
\documentclass{article}

\newcommand*\prozent[2]{\directlua{tex.print(#1/#2*100)}}

\begin{document}

\prozent{33}{117}

\end{document}
führt zu dem Ergebnis 28.2051... mit vielen Nachkommastellen.

Nun würde ich das Ergebnis gerne runden auf zwei Nachkommastellen. Das geht einerseits mit dem Paket numprint und dem Befehl \nprounddigits{2}. Davon aber sind sämtliche Zahlen betroffen, die numprint anfasst.

Führt tex.round() nur zu ganzen Zahlen?

Schreibe ich im obigen Beispiel

Code:
\newcommand*\prozent[2]{\directlua{tex.print(tex.round(#1/#2*100))}}
erhalte ich als Ergebnis "28", ich hätte aber eben gerne 28.21.

Es kommt natürlich in Frage, statt mal 100 einfach mal 10000 zu nehmen und das Ergebnis wieder durch 100 zu teilen, also:

Code:
\newcommand*\prozent[2]{\directlua{tex.print(tex.round(#1/#2*10000)/100)}}
mit dem gewünschten Ergebnis 28.21. Schon, aber bei Rechnungen, die glatt aufgehen, habe ich dann keine zwei Nachkommastellen und das sieht in Tabellen ganz schlecht aus.

Ich hoffe, es war verständlich dargelegt, was ich will: tex.round() mitteilen, auf wieviele Nachkommastellen gerundet werden soll.

Danke für Eure Hilfe!

Alexander