У меня возникли некоторые проблемы с основами математики на Java.Я не знаю, почему я получаю 0 в результате умножения n * n * n только в одном случае.(см. ниже) Мне нужно, чтобы это значение не было равным нулю, потому что мне нужно разделить синхронизацию / n * n * n, чтобы получить такую большую производительность O.Также, если мне удастся добиться этой работы, результат может выглядеть как 0,00000, но я хочу умножить его на 100000, чтобы я мог видеть цифры и находить любые тенденции в производительности.
Вы можете видеть значения n и времяв первых двух числовых столбцах.
- n равно Целое число
- время равно Long
ЭтоЭто мой вывод,
System.out.println(fmt.format("%20s %20d %20d %20d %20d %20d%n", "Alg. 1", n, timing, n*n*n, timing/(n*n), timing /*((double)timing/((double)n*Math.log((double)n)))*/));
Мои результаты,
Alg. 1 256 4 16777216 0 4
Alg. 1 512 22 134217728 0 22
Alg. 1 1024 173 1073741824 0 173
Alg. 1 2048 1362 0 0 1362
Пожалуйста, имейте в виду, мне нужно выполнить эту математику журнала также.Любые советы или исправления для этого также приветствуются!
Примечание : я не делю вообще в выражении n * n * n и получаю 0 в четвертом столбце четвертой строки.
Может кто-нибудь также подскажите, пожалуйста, как получить это, чтобы вывести десятичные разряды с точностью не только 0,000000.Моя новая арифметика: ((float) (хронометраж / ((long) n) * n * n) * 100000. Я умножаю на 100000, как сказано выше, потому что я хочу видеть что-то в десятичных разрядах. Я должен видеть 0,0159139 сэто уравнение, когда n равно 2048, а время 1362. Хотя я вижу только 0,000000. Есть предложения?