代码之家  ›  专栏  ›  技术社区  ›  Fortega

javascript奇怪的舍入问题

  •  0
  • Fortega  · 技术社区  · 17 年前

    我有以下用于舍入的javascript函数:

    function round(val, numberdigits){
    
        return Math.round(val*Math.pow(10, numberdigits))/Math.pow(10, numberdigits);
    
    }
    

    在大多数情况下,它的工作做得很好,但在一些罕见的情况下,返回值多了一位数,通常是5。

    数字为3的结果示例列表:

    5.329-5.081-4.271-3.271-2.1525-2.1375-2.1225-1.997-2.044-2.031-2.028

    有人能解释一下吗?或者给我提供一个更好的舍入函数来防止这个问题?

    1 回复  |  直到 17 年前
        1
  •  1
  •   James Wheare    17 年前

    您可以使用内置的 toFixed 数字方法:

    https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Number/toFixed

    Number(val.toFixed(numberofDigits))
    
    推荐文章