gpt4 book ai didi

java - 如何从长值中获取更多有效数字来打印?

转载 作者:行者123 更新时间:2023-12-01 23:26:44 26 4
gpt4 key购买 nike

我正在尝试打印 elapsed 持有的长值,有人可以帮助我了解如何执行此操作的格式吗?

这会打印0.0

但我知道它有更多有效数字(可能像 .0005324 或其他)

System.out.println("It took " + (double)elapsed + " milliseconds to complete SELECTION_SORT algorithm.");

'

    System.currentTimeMillis();
long start = System.currentTimeMillis();
int sortedArr[] = selectionSort(arr1);
long elapsed = System.currentTimeMillis() - start;


System.out.println("\n///////////SELECTIONSort//////////////");
System.out.println("\nSelection sort implemented below prints a sorted list:");
print(sortedArr);
System.out.printf("It took %.7f ms....", elapsed);

//System.out.println("It took " + (double)elapsed + " milliseconds to complete SELECTION_SORT algorithm.");'

'

    private static int[] selectionSort(int[] arr) {

int minIndex, tmp;
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
minIndex = i;
for (int j = i + 1; j < n; j++)
if (arr[j] < arr[minIndex])
minIndex = j;
if (minIndex != i) {
tmp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = tmp;
}
}
return arr;

}'

最佳答案

更改格式不会给你带来更高的分辨率,这才是你真正的问题,如果你用 7 位数字打印 1 毫秒,你每次都会得到 1.0000000。这对你根本没有帮助。

您需要的是一个高分辨率计时器

long start = System.nanoTime();
int sortedArr[] = selectionSort(arr1);
long elapsed = System.nanoTime() - start;

System.out.println("\n///////////SELECTIONSort//////////////");
System.out.println("\nSelection sort implemented below prints a sorted list:");
print(sortedArr);
System.out.printf("It took %.3f ms....", elapsed / 1e6);

但是,如果您这样做一次,您就是在欺骗自己,因为 Java 会动态编译代码,并且运行得越多,速度就会越快。它可以快 100 倍或更多,使您看到的第一个数字变得毫无用处。

通常我建议您多次运行循环并忽略前 10,000 多次。这将使结果发生很大的变化,以至于您会发现第一个数字完全错误。我建议你试试这个

for(int iter = 1; iter<=100000; iter *= 10) {
long start = System.nanoTime();
int[] sortedArr = null
for(int i=0;i<iter;i++)
sortedArr = selectionSort(arr1);
long elapsed = System.nanoTime() - start;

System.out.println("\n///////////SELECTIONSort//////////////");
System.out.println("\nSelection sort implemented below prints a sorted list:");
print(sortedArr);
System.out.printf("It took %.3f ms on average....", elapsed / 1e6 / iter);
}

只要运行代码更长时间,您就会发现结果提高了 10 倍甚至 100 倍。

关于java - 如何从长值中获取更多有效数字来打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19873134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com