JavaScript 数值型字符串求和比较问题

最近在项目中遇到了一个问题,就是通过 JavaScript 把几个数值型字符串相加求和,得到结果之后与另一个数值型字符串进行比较,最后得到的比较结果数据却与实际结果不符。

例如下面这几个数值型字符串相加,并与另一个数值型字符串比较:

<script type="text/javascript">
    // a 的值为 5.75842099999999999
    var a = Number("3.6302") + Number("0.3") + Number("0.7309") + Number("0.424921") + Number("0.1724") + Number("0.5");
    var b = Number("5.758421");
    alert(a == b);
</script>

上面的比较结果为 False,主要原因可以通过上面的 a 数据看出来,所以要得到正确的结果数据,需要对求得结果进行保留小数位数,通过 toFixed 函数可以实现这样的功能,最终求和函数如下:

<script type="text/javascript">
    function ToFixed(digit) {
        var v = 0;
        var length = arguments.length;
        if (length > 1) {
            for (var index = 1; index < length; index++) {
                v += Number(arguments[index]);
            }
        }
        return Number(v.toFixed(digit));
    }
</script>

参数 digit 表示小数保留位数,把上面的求和函数通过 ToFixed 来重新实现,最终比较结果与实际值相符,代码如下:

<script type="text/javascript">
    var a = ToFixed(6, "3.6302", "0.3", "0.7309", "0.424921", "0.1724", "0.5");
    var b = ToFixed(6, "5.758421");
    alert(a == b);
</script>

管理员

转载请注明出处!如果本博文或者本站对您(网站)的内容/素材构成侵权,请第一时间与本博主联系!

Press ESC to close