javascript中的round float值

时间:2013-08-13 19:48:51

标签: javascript floating-accuracy

我试图在JS中舍入一个值,但我没有得到舍入值,这就是我所拥有的:

  $(document).on("click", ".open-AddBookDialog", function () {
              var agentPercentage = parseFloat($('#<%=ddlSplitPerc.ClientID%>').val()).toFixed(2);
              var percMod = 1.0 - agentPercentage;
              percMod = Math.ceil(percMod * 100) / 100;
              var dropdownAgentPerc = $('#<%=ddlPercSplitAgent.ClientID %>');
              dropdownAgentPerc.val(percMod);
             dropdownAgentPerc.change();           
             $('#AddNewSplitAgentLife').modal('show');
          });

例如,agentPerentage是0.7,当我减去1 - 0.7时,我得到这个值:

  

0.30000000000000004

你们认为我应该改变什么?我也尝试了Math.cell示例,但结果是0.31。 请指教。 谢谢,Laziale

2 个答案:

答案 0 :(得分:3)

解决方案是另一个问题:Dealing with float precision in Javascript

(Math.floor(y/x) * x).toFixed(2);

答案 1 :(得分:0)

如果从传递给Math.ceil

的值中减去.5,它应该可以工作
percMod = Math.ceil((percMod * 100) -.5 )/ 100;

Math.ceil将向上舍入任何小于.000

的小数

因此,为了模拟仅在.500以上舍入小数的典型舍入行为,你应该减去.5