Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 双精度排序数组_Java_Arrays_Sorting_Double - Fatal编程技术网

Java 双精度排序数组

Java 双精度排序数组,java,arrays,sorting,double,Java,Arrays,Sorting,Double,我有一个double数组,我使用数组对它进行排序。sort问题是,在输出数组中,我有这样的东西(这是反转后的数组输出): 0.002385171991295645 9.914204103773398E-4 1.00139601969068E-4 9.975711760353395E-5 如此类推,我们可以看到最短的数字在顶部,最长的在底部。给定范围内的数字(如e-4)排序良好。我甚至创建了一个示例代码来测试这一点: double l1 = 0.002385171991295645; doub

我有一个double数组,我使用
数组对它进行排序。sort
问题是,在输出数组中,我有这样的东西(这是反转后的数组输出):

0.002385171991295645

9.914204103773398E-4

1.00139601969068E-4

9.975711760353395E-5

如此类推,我们可以看到最短的数字在顶部,最长的在底部。给定范围内的数字(如e-4)排序良好。我甚至创建了一个示例代码来测试这一点:

double l1 = 0.002385171991295645;
double l2 = 9.914204103773398E-4;
if(l1 > l2) {
    System.out.println("TRUE");
} else {
    System.out.println("FALSE");
}

它告诉我“真”,如何对这个数组排序?

你被科学符号(也称为)弄糊涂了


9.914204103773398E-4
表示
9.91。。。x 10^(-4)
,即
0.0009914…
。所以这个值确实小于
0.0023..

你可能不知道最后
E-4
的意思

9.914204103773398E-4
实际上是

9.914204103773398 * 10^-4
小于
0.002385171991295645

有关更多详细信息,请访问JLS-。

“e”或“e”表示“指数”,表示

以下是Oracle.com上的一个有用示例:

double d1 = 123.4;
double d2 = 1.234e2;
这两个号码是一样的。“e”基本上是指
10^x
10
提高到
x
)的幂次,其中后面的数字是
x
。所以在上面,
1.234*10^2
10^2
100
,因此
1.234*100
1.234


看看你的一个数字,
9.914204103773398E-4
,那就是
9.914204103773398*10^-4
10^-4
0.0001
,所以
9.914204103773398*0.0001
,也就是
0.0009914103773398

我看不出有问题,这些数字从大到小排序
9.914204103773398E-4
小于
0.002385171991295645
.0.002385171991295645>9.914204103773398E-4这是相当不错的OK@user你知道E-4是什么意思吧?