奇怪的int-to-string问题?

时间:2011-06-08 22:03:26

标签: iphone objective-c

我有这段代码:

NSString *hString = [NSString stringWithFormat:@"%d", (h * 100)];
    HField.text = hString;

H是0.721。

HField.text现在读取:

1073741824

为什么这不给我72?

3 个答案:

答案 0 :(得分:5)

阿。问题是h似乎是doublefloat。试试这个:

HField.text = [NSString stringWithFormat: @"%f", (h * 100.0)];

这应该有效。您必须将%f用于浮点数,将%d用于整数。

修改

HField.text = [NSString stringWithFormat: @"%d", (NSInteger) round(h * 100.0)];

Round将浮点数舍入为整数。您也可以分别使用ceil()floor()向上或向下舍入。 (NSInteger)强制转换用于确保将其转换为整数。

答案 1 :(得分:3)

可能是因为如果h是0.721,那么它是floatdouble,这意味着该产品是浮点数或双精度数,这意味着您应该将其转换为{ {1}}首先使用int

答案 2 :(得分:2)

%d你指的是一个整数托盘%f

NSString *hString = [NSString stringWithFormat:@"%f", (h * 100)];