JavaScript中toFixed()方法的使用误区

    链接地址:http://www.xx566.com/detail/21.html

    首先看一个工作中要到的异常错误,我现在有这样一个需求,主 要是一些针对于手续费的处理工作,手续费有个比例,有个最低和最高值,根据不同的提现 金额,获取不同的手续费,比如说有个id=test的select,里面有几个option,和一个id=params的提供参数的区域,根据选中的 option值,通过参数计算出相应的手续费值:暂无图片

    由于涉及页面的输出,所以使用了格式化输出,具体js代码如下:

 暂无图片

    可是出现了问题,当选择100元和200元时都正确提示,选择300元时出现错误:

暂无图片

    检查了好久,各种查询研究,果然找到了原因,问题出在parseFloat().toFixed(2)这里,因 为toFixed方法返回的是NumberObject的字符串表示,这点通过typeof(_fee)返回string得到了证实,字符串比较中是按第 一个不相同的字符的ascall码值来比较的,js中进行比较时,'6.00'>'50.00',6的ascall码值大于5於是返回了true, 得到了最大的手续费,只需要在比较之前,去掉toFixed()方法,比较后再格式话输出即可,代码如下:

$("#test").change(function(){
  var _cash = $("#test option:selected").val();//提现金额
  var _percent = parseFloat($("#params").attr("percent"));//手续费比例(占2%)
  var _lowest = parseFloat($("#params").attr("lowest"));//手续费最低
  var _highest = parseFloat($("#params").attr("highest"));//手续费最高
  var _fee = parseFloat(_cash*_percent/100);
  var result;
  if(_fee>_highest){
   result = parseFloat(_highest).toFixed(2);
  }else if(_fee<_lowest){
   result = parseFloat(_lowest).toFixed(2);
  }else{
   result = parseFloat(_fee).toFixed(2);
  }
  alert("选择金额:"+_cash+"元>>>>>>手续费:"+result+"元");
 });


   自然也顺利的得到了想要的结果,选择金额:300.0元>>>>>>手续费:6.00元


转载于:https://my.oschina.net/realfighter/blog/349530

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值