我的浮点变量有问题,我必须进行一些操作,然后我有一个最终数字,我看到有时数字不正确,但只是为了例如当我有这个数字并且我尝试时打印它我不给我同样的号码:
float myNumber = 27589353.0f;
NSLog(@"My Number is %.2f", myNumber);
结果是:My Number is 27589352.00
我试图把变量加倍,但我有同样的问题。
我的浮点变量有问题,我必须进行一些操作,然后我有一个最终数字,我看到有时数字不正确,但只是为了例如当我有这个数字并且我尝试时打印它我不给我同样的号码:
float myNumber = 27589353.0f;
NSLog(@"My Number is %.2f", myNumber);
结果是:My Number is 27589352.00
我试图把变量加倍,但我有同样的问题。
问题是浮点数没有足够的精度,正如 maddy 在上面的评论中所说的那样。
而这段代码:
double myNumber = 27589353.0f;
NSLog(@"My Number is %.2f", myNumber);
也不起作用,因为常量上的“f”限定符强制数字为浮点数,导致精度损失,然后将值提升为双精度,一旦损坏完成。
但是,此代码将正常工作:
double myNumber = 27589353.0;
NSLog(@"My Number is %.2f", myNumber);
(请注意,我正在分配一个带小数的浮点值,但没有最终的“f”
尝试这样它的工作,你必须删除'f'以及
double myNumber = 27589353.0;
NSLog(@"My Number is %.2f", myNumber);