我遇到了漂浮的麻烦。帮助我

时间:2013-04-08 08:45:19

标签: iphone ios objective-c

float abc = 20130401.0f;
NSLog(@"abc = %f",abc);

结果:

  

2013-04-08 15:47:38.963 CCLearnIphone [5034:c07] abc =   20130400.000000

使用double是一样的。

如何表达八位数?

我知道精度会丢失,但.000000不应该是1.0000000。

%f应为0.9xxxxx等

为什么.000000四舍五入为1.000000?

3 个答案:

答案 0 :(得分:0)

你的号码对于浮点值来说太高了所以你必须像双倍一样改变它并删除数字末尾的'f'字符

double abc = 20130401.0;
NSLog(@"abc = %f",abc);

答案 1 :(得分:-1)

这是由于float的精确度:大约7个十进制数字。

请参阅https://stackoverflow.com/a/5098949/104790

答案 2 :(得分:-1)

  
    

为什么.000000四舍五入为1.000000?

  

事实并非如此。 20130401舍入到20130400,因为20130400是float可以表示的最接近的值。