答案 0 :(得分:6)
{64}平台上CGFloat
实际上是double
。 (在旧的32位平台上是float
。)
所以在这里你将double
除以double
:
CGFloat price = 88888736 / a;
^^^^^ ^^^^^^^^ ^
double int -> double double
此处您将double
除以float
:
CGFloat price2 = 88888736 / 100.0f;
^^^^^^ ^^^^^^^^ ^^^^^^
double int -> double float
将100.0f
更改为100.0
或(CGFloat)100
,您应该没问题。
答案 1 :(得分:2)
CGFloat
在您的计算机上是double
,因此您正在做的是:
double a = 100.00f
double price = 88888736 / a
float a2 = 100.00f // `float` type enforced by the trailing `f`
double price2 = 88888736 / a2
不同之处在于,在第一种情况下,除法是double
除法,而在第二种情况下,这是float
除法,其中结果是然后分配给double
。由于float
除法精度较低,因此可以得到您所看到的结果。