这不是一个很大的问题,但我很好奇,我想知道为什么,在“1.1 - 1”(1.1为单,1为整数)之类的操作之后,结果等于0.09999并且不是1(1.1-1 = 0.1,自然)。
我已将整数“1”替换为单个“1.0”并且它正常工作。
谢谢,对不起我的英语。
一个。
答案 0 :(得分:1)
你需要知道数据如何存储在内存中,首先看一下整数,例如int
,short
,unsigned long long
它们存储在内存中,每个不同的位配置意味着不同的数字因此很好,相同的情况是float
个数字,不同的位配置意味着不同的数字,所以让我们看看类型的限制。比较int
和float
,它们都是32位数字。 int
限制为–2147483648 to 2147483647
4294967296个不同的值,那么float
#define FLT_MAX 3.402823466e+38F /* max value */
#define FLT_MIN 1.175494351e-38F /* min positive value */
因此,当你看到范围要宽得多,但不同数值的数量是相同的,所以你不能有这么好的精确度,你也可以阅读更多关于float
标准IEEE754 here或{{ 3}}