java tofixed_toFixed

经典二选一

前者可以 输入 [ 4. ] 后者不行!

运行代码

console.log(toFixed(4.,2))// 1

console.log(toFixed(5.,2))// 1

console.log(4.0 .toFixed(2))// 1

console.log('4.' .toFixed(2))// 1

运行结果

becb525b4224324124b42686cc98b232.png

function toFixed(number, decimal) {

decimal = decimal || 0;

var s = String(number);

var decimalIndex = s.indexOf('.');

if (decimalIndex < 0) {

var fraction = '';

for (var i = 0; i < decimal; i++) {

fraction += '0';

}

return s + '.' + fraction;

}

var numDigits = s.length - 1 - decimalIndex;

if (numDigits <= decimal) {

var fraction = '';

for (var i = 0; i < decimal - numDigits; i++) {

fraction += '0';

}

return s + fraction;

}

var digits = s.split('');

var pos = decimalIndex + decimal;

var roundDigit = digits[pos + 1];

if (roundDigit > 4) {

//跳过小数点

if (pos == decimalIndex) {

--pos;

}

digits[pos] = Number(digits[pos] || 0) + 1;

//循环进位

while (digits[pos] == 10) {

digits[pos] = 0;

--pos;

if (pos == decimalIndex) {

--pos;

}

digits[pos] = Number(digits[pos] || 0) + 1;

}

}

//避免包含末尾的.符号

if (decimal == 0) {

decimal--;

}

return digits.slice(0, decimalIndex + decimal + 1).join('');

}

var a = 19.02

var b = 209.01

// 结果

console.log(toFixed(a, 2)); //==> 19.02

console.log(toFixed(b, 2)); //==> 209.01

console.log(Number(toFixed(a, 2)) < Number(toFixed(b, 2))); //==> true

Number.prototype.toFixed = function (fractionDigits) {

var num = this;

return Math.round(num * Math.pow(10, fractionDigits)) / Math.pow(10, fractionDigits);

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值