web-dev-qa-db-ja.com

javascript:数値のx%を計算します

私は数字(たとえば10000)を与えられた後、パーセンテージ(たとえば35.8%)を与えられた場合、javascriptでどのように疑問に思っています

どのくらいの量を計算しますか(例:3580)

73
Hailwood
var result = (35.8 / 100) * 10000;

(この操作順序の変更について jball に感謝します。私はそれを考慮しませんでした)。

148
alex

割合を100で割った値(0〜1の割合を取得するため)を数値で割った値

35.8/100*10000
9
Timothy Ruhle

これは私がすることです:

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

...
<html goes here>
...

alert(per(10000, 35.8));
7
alcoholtech

2つの非常に便利なJS関数を使用します。 http://blog.bassta.bg/2013/05/rangetopercent-and-percenttorange/

function rangeToPercent(number, min, max){
   return ((number - min) / (max - min));
}

そして

function percentToRange(percent, min, max) {
   return((max - min) * percent + min);
}

関数の一部として%を渡したい場合は、次の代替手段を使用する必要があります。

<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
ArBR

一番いいのは、バランスの方程式を自然な方法で記憶することです。

Amount / Whole = Percentage / 100

通常、不足している変数が1つあります。この場合はAmountです

Amount / 10000 = 35.8 / 100

その後、両側から複数の外側と両側から内側に複数の高校の数学(割合)があります。

Amount * 100 = 358 000

Amount = 3580

これは、すべての言語と紙の上で同じように機能します。 JavaScriptも例外ではありません。

3
eomeroff
var number = 10000;
var result = .358 * number;
2
user1943442

浮動小数点の問題を完全に回避するには、パーセントが計算されている量とパーセント自体を整数に変換する必要があります。これは私がこれを解決した方法です:

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. 指数表記を使用して、amountpercentの両方を整数に変換します
  3. 適切な終了値を決定するために必要な指数表記を計算します
  4. 最終値を計算する

指数表記の使用法は Jack Mooreのブログ投稿 に触発されました。私の構文はもっと短くなると確信していますが、変数名の使用法と各ステップの説明ではできるだけ明確にしたかったのです。

1
Alex Mueller

ハードウェイ(学習目的):

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
1
Rubi Jihantoro

数値のキャスティングでは少々退屈で冗長な場合がありますが、指定された数値の割合を計算する安全な関数を次に示します。

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

// Usage: getPerc(10000, 25);
0
Grant