我已经了解了双精度和单精度之间的差异。然而,在大多数情况下,float
和 double
似乎可以互换,也就是说,使用其中一个似乎不会影响结果。这是真的吗?何时可以用浮点数和双精度互换?它们之间有什么区别?
我已经了解了双精度和单精度之间的差异。然而,在大多数情况下,float
和 double
似乎可以互换,也就是说,使用其中一个似乎不会影响结果。这是真的吗?何时可以用浮点数和双精度互换?它们之间有什么区别?
内置的比较操作在比较两个浮点数时,由于数据类型(即float或double)的不同,可能会导致不同的结果。
double
的精度约为类型 float
的两倍,并且范围大三倍(取决于您如何计算)。float
具有良好的精度,通常足以满足您的需求。另一方面,类型 double
具有卓越的精度,几乎总能满足您的需求。double
。除非您有特别特殊的需求,否则几乎永远不应该使用类型 float
。double
的精度足够高,因此大部分时间你不必担心。你仍然会得到良好的结果。另一方面,使用类型float
时,舍入误差看起来会引发令人警惕的问题。float
和 double
类型之间并不一定有不同的执行速度。在大多数今天的通用处理器上,对类型 float
和 double
的算术运算需要的时间基本相同。所有操作都是并行进行的,因此您不必为类型 double
的更大范围和精度付出速度惩罚。这就是为什么安全地建议您几乎永远不要使用类型 float
:使用 double
不应该影响速度,而且不应该占用太多空间,并且肯定会从精度和舍入误差的负担中获得好处。float
。在这些处理器上,类型 double
可能会明显变慢,或者根本不存在,因此在这些情况下,程序员通常选择类型 float
来提高速度,并可能在精度方面付出代价。与整数 int
不同的是,浮点数 float
有一个小数点,而双精度浮点数 double
也一样。
但两者之间的区别在于,double
比 float
更详细,可以有两倍数量的小数点后数字。