在数字排序期间保留精度

时间:2011-10-26 18:29:08

标签: javascript jquery sorting map numbers

我正在使用此函数对数组进行排序,其中一些是小数。但是在这种情况下我失去了.0这些价值观。我想在指定时保留这个精度,但是当它没有时,不要添加它。

例如: [1.5, 2, 0.75, 1.0, 0.75]应排序为[2, 1.5, 1.0, 0.75]但使用下面的函数排序为[2, 1.5, 1, 0.75]

var sortNums = function( arr ) {
        // Quit if arr is not an array.
        if ( !$.isArray(arr) ) { return false; }

        // Sort highest to lowest:
        arr.sort(function(a,b) {return (b-a);}); 

        // Remove non-numeric vals and return:
        return $.map(arr, function(v) {if (typeof v === 'number') {return v;}}); 
};

2 个答案:

答案 0 :(得分:4)

JavaScript删除了尾随小数零。

var x = 1.0;
x; // 1

如果要保留小数,则需要将它们转换为字符串。然后,如果需要,您可以在排序过程中将它们转换为数字。

答案 1 :(得分:1)

本身并没有任何精确性。但是sort已经正常运行,并且使用JavaScript无限有用的自动转换,-可以帮助您。请参阅:http://jsfiddle.net/hqc33/