排序浮点数的数组

时间:2013-08-28 19:43:39

标签: javascript node.js

我有一个浮点数数组:

[ 82.11742562118049, 28.86823689842918, 49.61295450928224, 5.861613903793295 ]

在数组上运行sort()之后我得到了这个:

[ 28.86823689842918, 49.61295450928224, 5.861613903793295, 82.11742562118049 ]

请注意,对于JavaScript(Node),5.8 ...大于49.6 ...那是为什么?

如何正确排序这些数字?

2 个答案:

答案 0 :(得分:39)

传递排序功能:

[….].sort(function(a,b) { return a - b;});

结果:

[5.861613903793295, 28.86823689842918, 49.61295450928224, 82.11742562118049] 

From MDN

  

如果未提供compareFunction,则会通过将元素转换为字符串并按字典(“词典”或“电话簿”,而不是数字)顺序比较字符串来对元素进行排序。

答案 1 :(得分:4)

内置的JS排序功能将所有内容视为字符串。尝试制作自己的:

var numbers = new Array ( 82.11742562118049, 28.86823689842918, 49.61295450928224, 5.861613903793295 );

function sortFloat(a,b) { return a - b; }

numbers.sort(sortFloat);