我必须为大学考试编写 C 代码,并且我有声明双变量而不是浮点变量的练习。这是一个坏习惯吗?他们可以扣分吗? (我们永远不会超过浮动限制)
我认为使用
double
比 float
更好,因为“0.71”不是双精度文字,如果我们确实 float one = “1.1”;我们正在将双精度转换为浮点。
在本网站的大量讨论中,参与者更喜欢
double
而不是float
,并且如果他们在提出的问题中看到它,建议将float
替换为double
。
一般来说,当您需要浮点值/变量时,只需使用 double 类型。默认情况下,表达式中使用的文字浮点值将被视为双精度,
人们期望 Windows 桌面和服务器上的浮点计算两种浮点类型之间是相同的。
在某些架构上,没有用于双打的专用硬件,...给您带来更差的吞吐量和两倍的延迟。在其他系统上(例如 x86 FPU),两种类型都转换为相同的内部格式 80 位浮点(对于 x86),因此性能是相同的。
某些智能手机和嵌入式架构可能会通过使用
float
而不是double
获得性能优势。
对于 IEEE 754,
float
为 32 位(24 位尾数,8 位指数),double
为 64 位(53 位尾数,11 位指数)。指数大小决定每种类型的最大值(和最小值)。尾数大小决定每种类型的最大精度级别。
除非您有用于“窄”浮点计算的宏,否则大多数数学函数(包含 math.h 的类型)都会返回
double
而不是 float
。像 const auto cosine = cos(theta)
这样的 C++ 声明将声明一个名为 double
的 cosine
。三角函数、舍入函数和指数函数以 double
作为参数并返回 double
。
OpenGL 是一个例外,其中
float
通常是首选,因为 API 处理浮点数。对于需要精度的图形计算,您可以使用 double
进行自己的计算,然后向下转换为 float
。