排序浮点数的数组

jvi*_*tti 29 javascript node.js

我有一个浮点数的数组:

[ 82.11742562118049, 28.86823689842918, 49.61295450928224, 5.861613903793295 ]
Run Code Online (Sandbox Code Playgroud)

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

[ 28.86823689842918, 49.61295450928224, 5.861613903793295, 82.11742562118049 ]
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能正确排序这些数字?

dc5*_*dc5 40

传入排序功能:

[….].sort(function(a,b) { return a - b;});
Run Code Online (Sandbox Code Playgroud)

结果:

[5.861613903793295, 28.86823689842918, 49.61295450928224, 82.11742562118049] 
Run Code Online (Sandbox Code Playgroud)

来自MDN:

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


Mat*_*lle 5

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

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

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

numbers.sort(sortFloat);
Run Code Online (Sandbox Code Playgroud)

  • 你应该使用数组文字来代替。`[...]`,而不是`new Array(...)` (4认同)