Когда вы просто пишете 1000, компилятор подразумевает целочисленный тип. Таким образом, при делении двух целых чисел (startTime - это long, а 1000 - это, вероятно, int), это будет целочисленное деление, что приведет к полу точного (точного) соотношения. Например, 2500/1000 будет 2. Однако, когда вы пишете 1000 как 1000.0, компилятор генерирует число с плавающей запятой. Целое число, разделенное на число с плавающей точкой, приводит к числу с плавающей точкой, поэтому 2500 / 1000.0 будет 2,5, как и ожидалось. По сути, именно поэтому вы получаете более короткие интервалы, просто используя целое число. (Другими словами, это тот факт, что целочисленное деление отбрасывает деление по модулю на делитель).