float和double有什么区别?

我已经读过双精度和单精度之间的区别。 可是,在大多数状况下, floatdouble float彷佛是可互换的,即,使用一个或另外一个彷佛不影响结果。 真的是这样吗? 花车和双打什么时候能够互换? 它们之间有什么区别? 算法


#1楼

  • 双精度为64,单精度(浮点数)为32位。
  • 双精度数的尾数较大(实数的整数位)。
  • 任何不许确之处都会加倍。

#2楼

浮点数的精度低于双精度数。 尽管您已经知道,但请阅读有关浮点算法的知识,以更好地理解。 服务器


#3楼

如下是C99标准(ISO-IEC 9899 6.2.5§10)或C ++ 2003(ISO-IEC 14882-2003 3.1.9§8)标准说: 数据结构

共有三种浮点类型: floatdoublelong doubledouble类型至少提供与float同样高的精度, long double类型至少提供与double同样高的精度。 float类型的值集是double类型的值集的子集; double类型的值集合是long double类型的值集合的子集。 测试

C ++标准增长了: spa

浮点类型的值表示形式是实现定义的。 code

我建议看一看优秀的每位计算机科学家应该了解的关于浮点算法的知识 ,该算法深刻地涵盖了IEEE浮点标准。 您将了解表示的详细信息,而且将意识到在幅度和精度之间要进行权衡。 浮点表示的精度随着幅度的减少而增长,所以-1和1之间的浮点数是精度最高的数字。 get


#4楼

使用浮点数时,您不能相信本地测试将与在服务器端进行的测试彻底相同。 您的本地系统以及最终测试的运行环境和编译器可能有所不一样。 在某些TopCoder竞赛中,我曾屡次看到此问题,尤为是当您尝试比较两个浮点数时。 编译器


#5楼

浮点计算中涉及的数字大小不是最相关的东西。 相关的是正在执行的计算。 io

本质上,若是您正在执行计算而且结果是一个无理数或重复的小数,那么当该数字被压缩为您使用的有限大小的数据结构时,将出现舍入错误。 因为double是float大小的两倍,所以舍入偏差会小不少。 编译

测试可能专门使用了会致使这种错误的数字,所以测试了您在代码中使用了适当的类型。

相关文章
相关标签/搜索