javascript:计算数字的x%


82

我想知道如何在javascript中给我一个数字(例如10000),然后给一个百分比(例如35.8%)

我怎么算出那是多少(例如3580)


2
您可以将数字乘以35.8%,也就是var number=10000; alert(number*0.358);
gnarf

Answers:


168
var result = (35.8 / 100) * 10000;

(感谢jball改变操作顺序。我没有考虑)。


3
您不需要在那里的括号。
Klaster_1 2010年

63
@ Klaster_1是的,只是想让关系更清晰。您可能会说我不需要分号,或var,或whitspace,但是它不是很可读或很好的代码?:P
alex

2
切换操作顺序可以避免浮点问题,例如,var result = pct / 100 * number;
jball 2010年

为什么要除以10000?当然,它给出了正确的答案,但是在语义上是没有意义的。
瑞安·福克斯

1
@Ryan Fox此处的10000是您要为其计算百分比(35.8)的总计。
Cagy79'7


7

这就是我要做的:

// num is your number
// amount is your percentage
function per(num, amount){
  return num*amount/100;
}

...
<html goes here>
...

alert(per(10000, 35.8));


6

如果要将%作为函数的一部分传递,则应使用以下替代方法:

<script>
function fpercentStr(quantity, percentString)
{
    var percent = new Number(percentString.replace("%", ""));
    return fpercent(quantity, percent);
}

function fpercent(quantity, percent)
{
    return quantity * percent / 100;
}
document.write("test 1:  " + fpercent(10000, 35.873))
document.write("test 2:  " + fpercentStr(10000, "35.873%"))
</script>

6

最好的办法是自然地记住平衡方程。

Amount / Whole = Percentage / 100

通常您缺少一个变量,在这种情况下为Amount

Amount / 10000 = 35.8 / 100

那么您的高中数学(比例)从两侧到外部都由内而外。

Amount * 100 = 358 000

Amount = 3580

它在所有语言和纸张上均相同。JavaScript也不例外。


3

为了完全避免浮点问题,需要将要计算其百分比的数量和百分比本身转换为整数。这是我解决的方法:

function calculatePercent(amount, percent) {
    const amountDecimals = getNumberOfDecimals(amount);
    const percentDecimals = getNumberOfDecimals(percent);
    const amountAsInteger = Math.round(amount + `e${amountDecimals}`);
    const percentAsInteger = Math.round(percent + `e${percentDecimals}`);
    const precisionCorrection = `e-${amountDecimals + percentDecimals + 2}`;    // add 2 to scale by an additional 100 since the percentage supplied is 100x the actual multiple (e.g. 35.8% is passed as 35.8, but as a proper multiple is 0.358)

    return Number((amountAsInteger * percentAsInteger) + precisionCorrection);
}

function getNumberOfDecimals(number) {
    const decimals = parseFloat(number).toString().split('.')[1];

    if (decimals) {
        return decimals.length;
    }

    return 0;
}

calculatePercent(20.05, 10); // 2.005

如您所见,我:

  1. 算上这两个小数位数amountpercent
  2. 使用指数表示法将amount和转换percent为整数
  3. 计算确定正确的最终值所需的指数表示法
  4. 计算最终值

指数表示法的使用受到Jack Moore博客文章的启发。我敢肯定我的语法会更短一些,但是我想在使用变量名和解释每个步骤时尽可能明确。



1

它的数字强制转换可能有点古怪/多余,但是这是计算给定数字百分比的安全函数:

function getPerc(num, percent) {
    return Number(num) - ((Number(percent) / 100) * Number(num));
}

// Usage: getPerc(10000, 25);

0

艰辛的方式(学习目的):

var number = 150
var percent= 10
var result = 0
for (var index = 0; index < number; index++) {
   const calculate = index / number * 100
   if (calculate == percent) result += index
}
return result
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.