Calculando el porcentaje

Calculando el porcentaje

Intenté usar el calcpaquete para escribir una macro que imprima un porcentaje basado en dos números. Por ejemplo: \printpercent{100}{200}debería mostrar 50% ya que 100 es el punto medio de 200. He probado muchas combinaciones diferentes, pero parece que no puedo imprimir ninguna respuesta significativa. Vea a continuación solo una de las muchas fórmulas que he probado:

\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}

Eso imprime:

1/100*100 = 0%

250/200*100 = 100%

  • ¿Cómo puedo calcular un porcentaje a partir de estos números?

Respuesta1

Los cálculos son solo para números enteros. Primero debes multiplicar #1por 100.

\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}

Y es más fácil usar eTeX:

\newcommand\printpercent[2]{\the\numexpr#1*100/#2\%}

Si necesita una solución más precisa, o la entrada no son valores enteros, puede usar paquetes, o fppara fltpointesto . Por ejemplo:pgfmathl3fp

\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}

Respuesta2

Otra posibilidad es utilizar pgfmathcon siunitx. No estoy seguro de que la precisión sea siempre correcta, en este caso es posible utilizar fpuo fp.

actualizar: Para un usuario que trabaja con tikzes posible reemplazar SIpor\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} 

ingrese la descripción de la imagen aquí

información relacionada