私は数字(たとえば10000)を与えられた後、パーセンテージ(たとえば35.8%)を与えられた場合、javascriptでどのように疑問に思っています
どのくらいの量を計算しますか(例:3580)
var result = (35.8 / 100) * 10000;
(この操作順序の変更について jball に感謝します。私はそれを考慮しませんでした)。
割合を100で割った値(0〜1の割合を取得するため)を数値で割った値
35.8/100*10000
これは私がすることです:
// num is your number
// amount is your percentage
function per(num, amount){
return num*amount/100;
}
...
<html goes here>
...
alert(per(10000, 35.8));
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>
一番いいのは、バランスの方程式を自然な方法で記憶することです。
Amount / Whole = Percentage / 100
通常、不足している変数が1つあります。この場合はAmountです
Amount / 10000 = 35.8 / 100
その後、両側から複数の外側と両側から内側に複数の高校の数学(割合)があります。
Amount * 100 = 358 000
Amount = 3580
これは、すべての言語と紙の上で同じように機能します。 JavaScriptも例外ではありません。
var number = 10000;
var result = .358 * number;
浮動小数点の問題を完全に回避するには、パーセントが計算されている量とパーセント自体を整数に変換する必要があります。これは私がこれを解決した方法です:
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
ご覧のとおり、私は:
amount
とpercent
の両方の小数の数を数えますamount
とpercent
の両方を整数に変換します指数表記の使用法は Jack Mooreのブログ投稿 に触発されました。私の構文はもっと短くなると確信していますが、変数名の使用法と各ステップの説明ではできるだけ明確にしたかったのです。
ハードウェイ(学習目的):
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
数値のキャスティングでは少々退屈で冗長な場合がありますが、指定された数値の割合を計算する安全な関数を次に示します。
function getPerc(num, percent) {
return Number(num) - ((Number(percent) / 100) * Number(num));
}
// Usage: getPerc(10000, 25);