已关闭。此问题为opinion-based。目前不接受回答。
**要改进此问题吗?**更新此问题,以便editing this post可以使用事实和引文来回答。
9天前关闭
Improve this question的
我必须为我的大学考试编写C代码,我有声明double
变量而不是float
变量的实践。这是一个坏习惯吗?他们可以为此扣分吗?(我们从来没有超过float
限制)
我认为使用double
比使用float
更好,因为0.71
是一个double
文本,如果我们声明float one = 1.1;
,我们将把double
转换为float
。
2条答案
按热度按时间4ioopgfo1#
在这个网站上的许多讨论中,参与者prefer
double
overfloat
和recommend replacingfloat
withdouble
如果他们在提出的问题中看到它。一般来说,当你需要一个浮点值/变量时,只需要使用double类型。表达式中使用的文字浮点值默认情况下会被视为double,
人们希望Windows桌面和服务器上的浮点计算是identical between the two floating-point types。
在某些架构上,没有专门的硬件用于double,.给你一个更差的吞吐量和两倍的延迟。在其他架构上(例如x86 FPU),两种类型都转换为相同的内部格式(80位浮点,在x86的情况下),所以性能是相同的。
某些smartphone和嵌入式架构可能会从使用
float
而不是double
获得性能优势。对于IEEE 754,
float
是32 bit(24位尾数,8位指数),double
是64 bit(53位尾数,11位指数)。指数大小决定了每种类型的最大(和最小)值。尾数大小决定了每种类型的最大精度级别。除非您有一个用于“狭义”浮点计算的宏,否则大多数数学函数(对于包含math.h的类型)返回
double
而不是float
。像const auto cosine = cos(theta)
这样的C++声明将声明一个名为cosine
的double
。三角函数,舍入和取幂函数将double
作为参数并返回double
。OpenGL是一个例外,因为API处理浮点数,所以
float
通常是首选。对于需要精度的图形计算,您可以使用double
进行自己的计算并向下转换为float
。Should I use double or float?What is the difference between float and double?
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
ldxq2e6h2#
你的问题需要基于观点的答案...让我们试着坚持事实:
我必须为我的大学考试编写C代码,我有声明
double
变量而不是float
变量的习惯,这是一个坏习惯吗?在现代系统的大多数情况下,
double
计算并不比float
计算慢,并且提供更好的精度和更宽的域。在特殊情况下,例如与视频游戏或神经网络的专用硬件接口,float
可能是更好甚至是唯一的选择,但对于一般问题,double
似乎更可取。我认为使用
double
比float
更好,因为0.71
是double
的字面量,如果我们声明float one = 1.1;
,我们将把double
转换为float
。你在这一点上是完全正确的。声明应该写为
float one = 1.1F;
以避免转换,尽管转换应该在编译时执行。还要注意,one == 1.1
可能会计算为false。他们能因此扣分吗?
这取决于当地的习俗和纠正者的习惯或观点。你应该问他们他们期望什么,并口头为你的观点辩护。学生违背老师的先入之见通常是个坏主意,即使这些先入之见是无效的,尤其是在公共场合这样做。