【发布时间】:2013-03-21 15:10:21
【问题描述】:
我试图将浮点数显示到小数点后一位。我得到了以下意想不到的结果:
代码:
float a = 1.25;
float b = 1.35;
NSLog(@"1.25 -> %.1f\n1.35 -> %.1f",a,b);
输出:
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);
1.25 -> 1.250000000000000000000000000000
1.35 -> 1.350000000000000088817841970013
很多很好的信息,但据我所知,没有人解决第二个问题:我如何获得预期的行为?
Rounding numbers in Objective-C 是一个完全不同的问题。
【问题讨论】:
-
这涉及到所有的 C 语言,而不仅仅是 Objective C。你得到什么取决于系统,1.25 可以打印为 1.2 或 1.3。
标签: objective-c c floating-point