sorting浮点数的数组

我有一个浮点数的数组:

[ 82.11742562118049, 28.86823689842918, 49.61295450928224, 5.861613903793295 ] 

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

 [ 28.86823689842918, 49.61295450928224, 5.861613903793295, 82.11742562118049 ] 

注意JavaScript(Node)的5.8 …大于49.6 …。 这是为什么?

我怎样才能正确地sorting这个数字?

传入一个sorting函数:

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

结果:

 [5.861613903793295, 28.86823689842918, 49.61295450928224, 82.11742562118049] 

来自MDN :

如果没有提供compareFunction,则通过将元素转换为string并按字典顺序(“字典”或“电话簿”,而不是数字)比较string来sorting元素。

内置的JSsorting函数将所有内容视为string。 尝试做你自己的:

 var numbers = new Array ( 82.11742562118049, 28.86823689842918, 49.61295450928224, 5.861613903793295 ); function sortFloat(a,b) { return a - b; } numbers.sort(sortFloat);