Java 双精度排序数组
我有一个double数组,我使用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
数组对它进行排序。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是什么意思吧?