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);