【发布时间】:2012-12-08 03:44:30
【问题描述】:
我很困惑为什么浮点数会出现舍入错误。谁能给我看一个示例或两个?它们的最小值和最大值是多少?这是否意味着我在最小值/最大值之间得到每一个(不是每一个......如果不是多少?)数字和小数?
所以如果我想拥有一个一个国家的人口。即美国,我应该为此选择 ints 而不是 floats 还是它们没有效果。内存,效率,兼顾。如果不考虑,答案会是什么?人口计数将是整数。
这些问题非常初级,并且在网上有很长的详细信息,但我很难将它们拼凑在一起,因为它们变得非常复杂。
感谢您的宝贵时间。
PS:如果这个问题措辞不当,请通过评论告诉我。我将进行编辑,以便更清晰。
【问题讨论】:
-
关于一个国家的人口,我从来没有见过一个人口包含分数的国家,如果一个国家有一千万半公民,那会显得很奇怪。
-
@JoachimPileborg:基本上,它可以简单地容纳一个整数人口。一个人不必按小数仪式递增吗?
-
不,因为那样在对值进行算术运算时会遇到麻烦。如果您不需要分数(例如对于人口),请使用无分数类型,例如整数。我还建议您阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic。
-
有关浮点数的更多信息,请参阅此问题(和答案):stackoverflow.com/q/10049533/937822 讨论“舍入错误”。
-
目前,你可以将任何一个国家的人口放入一个 32 位的有符号整数(中国大约是 13 亿),但世界人口不再适合 32-位无符号整数。请记住,
float使用 32 位存储浮点数的近似值;它不能存储比 32 位int更多的值。
标签: c floating-point int