【发布时间】:2009-07-14 15:07:59
【问题描述】:
我有以下简单的程序,可以多次将两个不同的浮点数相乘。如您所见,其中一个数字非常小。当我计算执行两个乘法的时间时,我很惊讶这个小数字比另一个花的时间长得多。使用小型双打似乎更慢...有谁知道发生了什么?
public static void main(String[] args) throws Exception
{
long iterations = 10000000;
double result;
double number = 0.1D;
double numberA = Double.MIN_VALUE;
double numberB = 0.0008D;
long startTime, endTime,elapsedTime;
//Multiply numberA
startTime = System.currentTimeMillis();
for(int i=0; i < iterations; i++)
result = number * numberA;
endTime = System.currentTimeMillis();
elapsedTime = endTime - startTime;
System.out.println("Number A) Time elapsed: " + elapsedTime + " ms");
//Multiply numberB
startTime = System.currentTimeMillis();
for(int i=0; i < iterations; i++)
result = number * numberB;
endTime = System.currentTimeMillis();
elapsedTime = endTime - startTime;
System.out.println("Number B) Time elapsed: " + elapsedTime + " ms");
}
结果:
数字 A) 已用时间:3546 毫秒 数字 B)经过的时间:110 毫秒
平台 Windows,Java 1.6.0_07
谢谢, 迭戈
【问题讨论】:
标签: java floating-point