小编put*_*idp的帖子

使用%.1f时打印出意外的值

我试图将浮动显示只有一个小数点.我得到了意想不到的结果如下:

码:

float a = 1.25;
float b = 1.35;

NSLog(@"1.25 -> %.1f\n1.35 -> %.1f",a,b);
Run Code Online (Sandbox Code Playgroud)

输出:

1.25 - > 1.2

1.35 - > 1.4

预期产出,或者:

1.25 - > 1.3

1.35 - > 1.4

要么:

1.25 - > 1.2

1.35 - > 1.3

这仅仅是由于二进制和十进制之间的内部转换?如果是这样,我如何获得预期的行为?

我正在使用Xcode 4.6.

编辑:好的,感谢TonyK和H2CO3,这是由于小数的二进制表示.

float a = 1.25;
float b = 1.35;
NSLog(@"1.25 -> %.30f\n1.35 -> %.30f",a,b);
Run Code Online (Sandbox Code Playgroud)

1.25 - > 1.250000000000000000000000000000

1.35 - > 1.350000000000000088817841970013

很多好消息,但据我所知,没有人接近第二个问题:我如何得到预期的行为?

Objective-C中的舍入数字是一个完全不同的问题.

c floating-point objective-c

3
推荐指数
1
解决办法
121
查看次数

标签 统计

c ×1

floating-point ×1

objective-c ×1