Ste*_*e K 16 javascript exponentiation
我需要为特定功率创建一个整数值(这不是正确的术语,但基本上我需要创建10,100,1000等)."power"将被指定为函数参数.我提出了一个解决方案,但是MAN确实感到hacky和错误.我想学习更好的方法,如果有一个,也许一个不是基于字符串的?此外,eval()不是一个选项.
这是我现在所拥有的:
function makeMultiplierBase(precision)
{
var numToParse = '1';
for(var i = 0; i < precision; i++)
{
numToParse += '0';
}
return parseFloat(numToParse);
}
Run Code Online (Sandbox Code Playgroud)
我也想出了这个基于非字符串的解决方案,但由于循环仍然看起来很hacky:
function a(precision)
{
var tmp = 10;
for(var i = 1; i < precision; i++)
{
tmp *= 10;
}
return tmp;
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我需要这样做来创建一个使用货币的舍入方法.我一直在使用var formatted = Math.round(value*100)/ 100
但是这个代码出现在各处,我想要一个方法来处理特定精度的舍入,所以我创建了这个
if(!Math.roundToPrecision)
{
Math.roundToPrecision = function(value, precision)
{
Guard.NotNull(value, 'value');
b = Math.pow(10, precision);
return Math.round(value * b) / b;
}
}
Run Code Online (Sandbox Code Playgroud)
我以为我会把它包含在这里,因为它已被证明是方便的.
dav*_*vin 41
在ES5及更早版本中,使用Math.pow:
var result = Math.pow(10, precision);
Run Code Online (Sandbox Code Playgroud)
var precision = 5;
var result = Math.pow(10, precision);
console.log(result);Run Code Online (Sandbox Code Playgroud)
在ES2016及更高版本中,使用指数运算符:
let result = 10 ** precision;
Run Code Online (Sandbox Code Playgroud)
let precision = 5;
let result = 10 ** precision;
console.log(result);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17579 次 |
| 最近记录: |