计算百分比

计算百分比

我曾尝试使用该calc包编写一个宏,该宏可根据两个数字打印百分比。例如:\printpercent{100}{200}应显示 50%,因为 100 是 200 的中间值。我尝试过许多不同的组合,但似乎无法打印出任何有意义的答案。请参见下文,这是我尝试过的众多公式之一:

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

打印结果如下:

1/100*100 = 0%

250/200*100 = 100%

  • 我怎样才能根据这些数字计算出百分比?

答案1

计算仅适用于整数。您应该#1先乘以 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}

使用 eTeX 更简单:

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

如果您需要更精确的解决方案,或者输入不是整数值,您可以使用fpfltpoint或包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}

答案2

另一种可能性是使用pgfmathsiunitx我不确定精度是否总是正确的,在这种情况下可以使用fpufp

更新:对于使用的用户,tikz可以将其替换SI\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} 

在此处输入图片描述

相关内容