
Ich habe versucht, mit dem calc
Paket ein Makro zu schreiben, das einen Prozentsatz basierend auf zwei Zahlen ausgibt. Beispiel: \printpercent{100}{200}
sollte 50 % anzeigen, da 100 die Hälfte von 200 ist. Ich habe viele verschiedene Kombinationen ausprobiert, aber es scheint mir, als ob ich keine sinnvollen Ergebnisse ausdrucken kann. Unten sehen Sie nur eine der vielen Formeln, die ich ausprobiert habe:
\documentclass{article}
\usepackage{calc}
\newcounter{z}
\newcommand{\printpercent}[2]{%
\setcounter{z}{#1 / #2 * 100}
$#1/#2*100=\arabic{z}\%$
}%
\begin{document}
\printpercent{1}{100}
\printpercent{250}{200}
\end{document}
Das Ergebnis ist:
1/100*100 = 0%
250/200*100 = 100 %
- Wie kann ich aus diesen Zahlen einen Prozentsatz berechnen?
Antwort1
Die Berechnung gilt nur für Ganzzahlen. Sie sollten #1
zuerst mit 100 multiplizieren.
\documentclass{article}
\usepackage{calc}
\newcounter{z}
\newcommand{\printpercent}[2]{%
\setcounter{z}{#1 * 100 / #2}
$#1/#2*100=\arabic{z}\%$
}%
\begin{document}
\printpercent{1}{100}
\printpercent{250}{200}
\end{document}
Und es ist einfacher, eTeX zu verwenden:
\newcommand\printpercent[2]{\the\numexpr#1*100/#2\%}
Wenn Sie eine präzisere Lösung benötigen oder die Eingabe keine Ganzzahlen sind, können Sie hierfür die Pakete fp
, fltpoint
, pgfmath
oder verwenden l3fp
. Beispiel:
\documentclass{article}
\usepackage{fp}
\newcommand\printpercent[2]{\FPeval\result{round(#1*100/#2,1)}\result\%}
\begin{document}
\printpercent{2.3}{100}
\printpercent{176.5}{190.375}
\end{document}
Antwort2
Eine andere Möglichkeit ist die Verwendung pgfmath
mit siunitx
. Ich bin nicht sicher, ob die Genauigkeit immer stimmt, in diesem Fall ist es möglich, fpu
oder zu verwenden fp
.
aktualisieren: Für einen Benutzer, der mit arbeitet, tikz
ist es möglich, zu ersetzen SI
durch\pgfmathprintnumber
\documentclass{article}
\input{pgfutil-common.tex}
\usepackage{pgfkeys,pgfmath}
\usepackage{siunitx}
\newcommand{\printpercent}[3][2]{%
\pgfmathdivide{#2}{#3}%
\pgfmathmultiply{\pgfmathresult}{100}%
\SI[round-mode=places,round-precision=#1]{\pgfmathresult}{\percent}
}%
\begin{document}
\printpercent[0]{1}{100}
\printpercent{200}{250}
\printpercent{2}{3}
\end{document}