2013-10-30 41 views
0

我有一个问题,我的浮点型变量,我必须做一些操作,然后我有一个最后的数字,我看到的是有些时候数字是不正确的,但只是一个例子当我有这个号码,我尝试打印我不给我回同一个号码:问题与浮号

float myNumber = 27589353.0f; 
NSLog(@"My Number is %.2f", myNumber); 

结果为:My Number is 27589352.00

我试图把可变双,但我有同样的问题。

+2

的http://浮点-gui.de - foating-point类型不准确 – 2013-10-30 00:29:10

+0

对'float'的精度太高了,使用'double' – rmaddy

+0

@rmaddy“我试过把变量double放进去,但是我有同样的问题。 “ – 2013-10-30 00:30:53

回答

-1

尝试喜欢它的工作,你必须删除“F”以及

double myNumber = 27589353.0; 
NSLog(@"My Number is %.2f", myNumber); 
+1

这也不正确。您正在将myNumber设置为一个长整型,它不能存储浮点值。在这个问题上跳舞。看到我的帖子下面的解决方案。 –

+0

(或者看到我上面的评论,你复制后甚至无法得到它。) –

+0

当我发布我的答案评论不存在 - .-我有几天前回答类似的答案,@DuncanC什么我告诉他只是问题是'f',所以现在我更新我的答案,您可以删除您的-1 .- –

1

的问题是,浮动不具备足够的精度,如麦迪在上面的评论说。

而这种代码:

double myNumber = 27589353.0f; 
NSLog(@"My Number is %.2f", myNumber); 

将无法​​工作或者是因为在恒定的力量“F”限定的数量是一个浮动,导致精度损失,进而促进价值双,一旦造成损害。

此代码然而,将正常工作:

double myNumber = 27589353.0; 
NSLog(@"My Number is %.2f", myNumber); 

(请注意,我指定了十进制浮点值,但最后还是没有“F”