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