我对双精度和浮点除法的精度和速度有疑问。
例如:
double a;
a=myfun(); //returns a number with lots of decimals
float b=5.0;
double result=a/b;
如果 b 是双倍的,结果会改变吗?如果它们不是双精度数,是否需要更多时间来计算(因为更改了浮点数的大小以适应双精度数)?
我对双精度和浮点除法的精度和速度有疑问。
例如:
double a;
a=myfun(); //returns a number with lots of decimals
float b=5.0;
double result=a/b;
如果 b 是双倍的,结果会改变吗?如果它们不是双精度数,是否需要更多时间来计算(因为更改了浮点数的大小以适应双精度数)?
从 float 到 double 或 double 到 float 的转换时间差真的可以忽略不计
查看此链接,它肯定会对您有所帮助。
如果 b 是双倍的,结果会改变吗?
由于该值为 0.5,因此结果不应改变。如果它是一个不同的值,它可能会改变,因为双精度比浮点精度更高。
如果它们不是双打,是否需要更多时间来计算?
是的,它确实。但是从 float 转换为 double 的时间真的可以忽略不计。
你试过这样做吗?double
b无论如何都会在除法期间转换为。浮点除法很昂贵,浮点除法所需的时间稍快。