为了账号安全,请及时绑定邮箱和手机立即绑定

关于.toFixed()的重写

关于.toFixed()的重写

BIG阳 2018-10-17 11:14:51
最近发现JS当中toFixed()方法存在一些问题。采用toFixed()方法时,规则并不是标准的“四舍五入”。而且不同的浏览器会有不同的结果,所以为了满足正确的运算,需要对toFixed重写。在浏览了各大论坛后,有这么一种比较简单的方法:<script>Number.prototype.toFixed = function (exponent) {      return parseInt(this * Math.pow(10, exponent) + 0.5) / Math.pow(10, exponent);  }</script>原理就不解释了,来不及了。这个方法在正数情况下是可行的,但是对于负数还是会有偏差。例如:document.write((-0.050).toFixed(2));在Chrome下会输出为-0.04;我觉得问题出现在+0.5那里,但是不知道咋改。请大神指点一二。另外,如果有更好的办法,还请不吝赐教,谢谢。想了下……貌似这样可以的:Number.prototype.toFixed = function (exponent) {      if(this>0){        return parseInt(this * Math.pow(10, exponent) + 0.5) / Math.pow(10, exponent);      }else{        return parseInt(this * Math.pow(10, exponent) - 0.5) / Math.pow(10, exponent);      }    }那么……还有更好的办法嘛?
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

这个方法有个问题,你输入整数,30,300等发现输出还是30,300,但是页面展示肯定是30.00,300.00
当然只是展示的问题,但足以over.看了个别人的

(没有验证)


查看完整回答
反对 回复 2018-11-16
  • 1 回答
  • 0 关注
  • 776 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信