Semua masalah itu melakukan pengaturan lokal saya. Ubuntu saya dalam bahasa Ceko:
$ echo $LANG
cs_CZ.UTF-8
Dalam pengaturan lokal ini, ini bukan titik desimal, melainkan koma desimal yang memisahkan bilangan bulat dari yang lain (seperti yang kami pikirkan di kelas matematika, dalam bahasa kami, kami benar-benar menulis koma, bukan titik).
Oleh karena itu:
echo '0,03 >> 0,4 >
> -0,3 >
> 0' | sort -n
> 0
> -0,3 >
> 0,4 >
0,03 >
Jika Anda sedang menulis skrip bash, setel rutin penyortiran untuk menggunakan setelan "normal".
export LC_ALL=C
Masalahnya mungkin ada pada perintah sortir Anda. Jika saya menjalankan yang sama, hasil saya seperti yang diharapkan:
$ echo '0.00159265291648695254
> -0.00318530179313823899
> 0
> 0.00999983333416666468
> 0.00362937767285478371
> 0.00477794259012844049
> -0.00637057126765263261
> 0.00681464007477014026
> -0.00840724736714870645
> -0.00522201549675090458' | sort -n
-0.00840724736714870645
-0.00637057126765263261
-0.00522201549675090458
-0.00318530179313823899
0
0.00159265291648695254
0.00362937767285478371
0.00477794259012844049
0.00681464007477014026
0.00999983333416666468
Anda harus menggunakan pengurutan GNU jika tidak menggunakannya
sort (GNU coreutils) 5.93
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software. You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and Paul Eggert.