我正在寻找一个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/