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

结果:

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

使用双精度也是一样的。

如何表示一个八位数字?

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

%f 应该是 0.9xxxxxx 等

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

4

3 回答 3

0

您的数字对于 float var 来说太高了,因此您必须将其更改为 double 并删除数字末尾的“f”字符

double abc = 20130401.0;
NSLog(@"abc = %f",abc);
于 2013-10-28T22:27:16.343 回答
-1

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

https://stackoverflow.com/a/5098949/104790

于 2013-04-08T08:49:22.143 回答
-1

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

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

于 2013-04-08T08:59:17.007 回答