public static void main(String[] args) throws InterruptedException{
long sTime = new Date().getTime();
Thread.sleep(3234);
long eTime = new Date().getTime();
float diff = ((eTime-sTime)/1000);
System.out.println(diff);
}
В приведенном выше коде я ожидаю, что выход будет 3.234, но это 3.0. Я хочу точную разницу между двумя раз в секунды, с дробной частью.Как получить разницу в дате как число с плавающей запятой с точностью до миллисекунды
длинный (INT) разделение. Если вы хотите больше точности использовать nanoTime() –
Не то, чтобы 'sleep' * не * гарантированно спал точно за время, которое вы ему даете, поэтому даже когда вы исправляете свою программу, вы обнаружите, что она не выводит 3.234. Вероятно, он будет более грубым, чем миллисекунды, и иногда продолжительность будет заметно дольше. – Raedwald
Обратите внимание, что использование 'float' или даже' double' несовместимо с вашим требованием для точной разницы_ из-за [точности] (http://en.wikipedia.org/wiki/Double-precision_floating-point_format) или плавающего номера точек. Вы можете захотеть использовать «BigDecimal». –