Number对象常用的toFixed()方法
与String对象类似,我们需要先创建一个Number对象,然后才能使用Number对象的各种方法和属性。要创建一个Number对象,可以使用如下代码:
var firstNumber = new Number(123);
var secondNumber = new Number('123');
然而,也可以声明一个基本数据类型的数值,然后把它作为一个Number对象使用。JavaScript将自动实现从数值到Number对象的转换:
var myNumber = 123.765;
与String对象类似,只要JavaScript能推断出需要转换的对象类型,JavaScript就能在后台自动地实现从基本类型到对象类型的转换。例如对于如下代码:
var myNumber = "123.567";
JavaScript能正确地推断出这是一个字符串类型,而不是一个数值类型。因此,不能使用Number对象的任何方法。
下面将介绍Number对象的一个最常用的方法—— toFixed()方法。
toFixed()方法
toFixed()方法是JavaScript 1.5和JScript 5.5中新加入的方法,因此,仅在Netscape 6+或IE 5.5+浏览器中支持。该方法用于截取指定小数点位数的数字。下面用一个计算营业税的例子来说明。假如某个商品的价格是9.99美元,而营业税是7.5%,因此加上营业税之后的价格将是10.73925美元。然而,对于货币交易来说这个值是有问题的—— 需要将税后价格截取到小数点之后的两位数即可。下面是一个例子:
var itemCost = 9.99;
var itemCostAfterTax = 9.99 * 1.075;
document.write("Item cost is $" + itemCostAfterTax + "<br>");
itemCostAfterTax = itemCostAfterTax.toFixed(2);
document.write("Item cost fixed to 2 decimal places is " + itemCostAfterTax);
第一个document.write()语句将在页面上输出如下信息:
Item cost is 10.73925
但是,这并不是我们需要的格式,我们只需要输出到小数点之后的两位数,所以在下面这行代码中使用了toFixed()方法截取小数点之后的两位数字:
itemCostAfterTax = itemCostAfterTax.toFixed(2);
这里使用了Number对象的toFixed()方法,将变量itemCostAfterTax中的值截取至小数点后的两位。toFixed()方法只有一个参数,就是我们希望截取的小数点的位数。截取到小数点之后的两位数,则第二个document.write()语句将在页面上输出如下信息:
Item cost fixed to 2 decimal places is 10.74
也许你会感到奇怪,为什么截取的结果是10.74而不是10.73呢?toFixed()方法不仅仅截去多余的小数位,同时它还根据截取位置的下一个小数位进行四舍五入。例如,对于数值10.739,截取到小数点后的两位数,结果将是10.74。而对于数值10.732,截取到小数点后的两位数,结果将是10.73。
注意,在JavaScript中我们只能截取小数点之后0位~20位的小数。
toFixed()方法仅被高版本的浏览器所支持,所以在使用之前最好先检查一下浏览器是否支持该方法,检查的代码如下所示:
var varNumber = 22.234;
if (varNumber.toFixed)
{
// Browser supports toFixed() method
varNumber = varNumber.toFixed(2)
}
else
{
// Browser doesn’t support toFixed() method so use some other code
var div = Math.pow(10,2);
varNumber = Math.round(varNumber * div) / div;
}