我正在寻找一个JavaScript函数将数字四舍五入到指定的小数位数,并且找到了以下页面:http://www.kadimi.com/en/round-float-349

该页面包括一个使用原型和toFixed()函数的部分.....但是,我也找到了该页面:http://freewebdesigntutorials.com/javaScriptTutorials/jsNumberObject/toFixedMethod.htm(请参见最后一个示例),并且它直接使用了toFixed函数并似乎在做同样的事情。

我不是一个大的javascript人,如果这是一个愚蠢的问题,请您道歉,但是它们之间有什么区别?

这里是为了清楚起见。

带有原型:

if (!Number.toFixed) {
  Number.prototype.toFixed=function(n){
    return Math.round(this*Math.pow(10, n)) / Math.pow(10, n);
  }
}

// example:
floating_number = 123.45687;
decimal_points = 2;
window.alert(floating_number.toFixed(decimal_points));


标准:

var numex = 3.1415926535;
alert( numex.toFixed(5) );


我还尝试了使用该功能的第一批代码。

function round_float(number,places){
    if (!number.toFixed) {
        number.prototype.toFixed=function(places){
            return Math.round(this*Math.pow(10, places)) / Math.pow(10, places);
        }
    } else {
        alert('bad');
    }
}


它进入了“不良”警报部分。....我猜这是由于toFixed的错误响应引起的;知道为什么这个函数是这样写的吗?

最佳答案

我不确定为什么在else块中有alert('bad');在“坏”情况下真正发生的所有事情就是number变量已经定义了一个称为toFixed的成员(强制转换为布尔值时该结果为true-函数的情况始终如此)。

这不一定是一件坏事,因为这就是您希望最终结果是什么?如果还没有native *实现,则代码似乎在定义toFixed版本。当存在本机*支持时,将触发警报。

*(嗯,要么是浏览器的本机,要么已经由JS库添加到原型中。无论哪种方式,它都已经存在,因此不需要更多工作。)

关于javascript - 有关使用JavaScript的toFixed()函数的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5300742/

10-12 15:37