【发布时间】:2011-09-11 07:26:52
【问题描述】:
我需要创建一个特定幂的整数值(这不是正确的术语,但基本上我需要创建 10、100、1000 等)“幂”将被指定为函数参数。我想出了一个解决方案,但 MAN 确实觉得它很笨拙和错误。如果有一种方法,也许不是基于字符串的方法,我想学习一种更好的方法?此外,eval() 不是一个选项。
这是我目前拥有的:
function makeMultiplierBase(precision)
{
var numToParse = '1';
for(var i = 0; i < precision; i++)
{
numToParse += '0';
}
return parseFloat(numToParse);
}
我也刚刚想出了这个基于非字符串的解决方案,但由于循环,它仍然看起来很老套:
function a(precision)
{
var tmp = 10;
for(var i = 1; i < precision; i++)
{
tmp *= 10;
}
return tmp;
}
顺便说一句,我需要这样做来创建一种用于处理货币的舍入方法。我一直在使用 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;
}
}
我想我会把它包括在这里,因为它已经被证明很方便。
【问题讨论】:
-
那么,你为什么将它设为浮点数而不是整数?
-
@Shad 你指的是 parseFloat() 调用?如果是这样,我想这只是一个疏忽, Number(numToParse) 也会起作用