从NSString转换为float?

1 floating-point nsstring

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

[str doubValue]
Run Code Online (Sandbox Code Playgroud)

它返回35.770912.


我想转换这个字符串

NSString *tt =[NSString stringWithFormat:@"%.14f", 35.77091272818393 ];
Run Code Online (Sandbox Code Playgroud)

使用浮动

var=[tt floatValue];
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*ley 6

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

[NSString stringWithFormat:@"%.14", @"35.77091272818393"];
Run Code Online (Sandbox Code Playgroud)

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


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

NSString *tt = [NSString stringWithFormat:@"%.14f", 35.77091272818393];
double var = [tt doubleValue];
Run Code Online (Sandbox Code Playgroud)