从NSString转换为float?

时间:2012-03-09 16:51:22

标签: nsstring floating-point

如何将此数字转换为浮点数?它是35.77091272818393,类型为NSString。问题是,如果我使用

[str doubValue]

它返回35.770912。


我想转换此字符串

NSString *tt =[NSString stringWithFormat:@"%.14f", 35.77091272818393 ];

使用

浮动
var=[tt floatValue];

但它没有足够的精度 - 它只返回35.7709127而不是所有数字。

1 个答案:

答案 0 :(得分:6)

您的问题是您看到的值35.770912是舍入的双精度浮点值。如果您想要更多小数点,可以使用以下内容:

[NSString stringWithFormat:@"%.14", @"35.77091272818393"];

这将打印出14个小数点的值,您将看到浮点值中的精度没有丢失。


您在问题的第二部分遇到问题,因为您正在访问字符串的floatValue属性而不是doubleValue属性。您引用的数字需要比float提供的更精确。必须以双精度浮点类型存储数字。这样的事情可以解决你的问题:

NSString *tt = [NSString stringWithFormat:@"%.14f", 35.77091272818393];
double var = [tt doubleValue];
相关问题