当前位置:  开发笔记 > 编程语言 > 正文

为什么这个C代码会生成double而不是float?

如何解决《为什么这个C代码会生成double而不是float?》经验,为你挑选了1个好方法。

celsius = (5.0/9.0) * (fahr-32.0);

它只是C开发人员决定的开发选择还是有理由这样做?我相信浮点数小于一个浮点数,因此可能是为了防止因不知道使用哪种十进制格式而导致的溢出.这是原因,还是我忽略了什么?



1> Shog9..:
celsius = (5.0/9.0) * (fahr-32.0);

在这个表达式中,5.0,9.0,和32.0double秒.这是浮点常量的默认类型 - 如果您希望它们是floats,那么您将使用F后缀:

celsius = (5.0F/9.0F) * (fahr-32.0F);

请注意,如果fahr是a double,那么最后一个表达式的结果仍然double:如Vaibhav所指出的那样,类型的提升方式可以避免可能失去精度.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有