ale*_*lex 151
var result = (35.8 / 100) * 10000;
Run Code Online (Sandbox Code Playgroud)
(谢谢jball这个操作顺序的改变.我没有考虑它).
小智 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));
Run Code Online (Sandbox Code Playgroud)
如果要将%作为函数的一部分传递,则应使用以下替代方法:
<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>
Run Code Online (Sandbox Code Playgroud)
我使用了两个非常有用的JS函数:http: //blog.bassta.bg/2013/05/rangetopercent-and-percenttorange/
function rangeToPercent(number, min, max){
return ((number - min) / (max - min));
}
Run Code Online (Sandbox Code Playgroud)
和
function percentToRange(percent, min, max) {
return((max - min) * percent + min);
}
Run Code Online (Sandbox Code Playgroud)
为了完全避免浮点问题,计算百分比的金额和百分比本身需要转换为整数。我是这样解决这个问题的:
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
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我:
amount计算和中的小数位数percentamount和转换为整数percent指数表示法的使用受到Jack Moore 博客文章的启发。我确信我的语法可以更短,但我希望在变量名称的使用和解释每个步骤时尽可能明确。
最好的办法是自然地记住平衡方程。
Amount / Whole = Percentage / 100
Run Code Online (Sandbox Code Playgroud)
通常您缺少一个变量,在这种情况下为Amount
Amount / 10000 = 35.8 / 100
Run Code Online (Sandbox Code Playgroud)
那么您的高中数学(比例)从两边到外部,两边都在内部。
Amount * 100 = 358 000
Amount = 3580
Run Code Online (Sandbox Code Playgroud)
它在所有语言和纸张上均相同。JavaScript也不例外。
| 归档时间: |
|
| 查看次数: |
162489 次 |
| 最近记录: |