将NSString转换为Float - 在小数位数中添加?

Guy*_*ood 2 floating-point objective-c nsstring ios

我正在解析XML文件中的一些顶点信息,其内容如下(部分提取):

21081.7 23447.6 2781.62 24207.4 18697.3 -2196.96
Run Code Online (Sandbox Code Playgroud)

我将字符串保存为NSString,然后转换为浮点值(我稍后会将其输入OpenGL ES)

NSString * xPoint = [finishedParsingArray objectAtIndex:baseIndex];
                 NSLog(@"xPoiint is %@", xPoint);

                 float x = [xPoint floatValue];
Run Code Online (Sandbox Code Playgroud)

问题是float x更改值如下:

21081.699219, 23447.599609, 2781.620117, 24207.400391, 18697.300781, -2196.959961
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它正在改变小数位数(不确定它是如何做到的 - 必须在xml文件中隐藏格式化?)

我的问题是如何存储浮点数以匹配NSString/XML文件中的原始数字到相同的小数位数?

提前致谢 !

Jam*_*ter 5

你的问题似乎是你不明白如何floats存储在内存中并且不知道浮点数不精确.

通常无法存储确切的值,因此系统会选择最接近的数字来表示它.如果仔细观察,可以看到每个输出的数字都非常接近您输入的值.

为了更好的准确性,请尝试使用double.Double确实遇到了同样的问题,但精度更高.浮动有大约6位有效数字; 双打比两倍多.资源

以下是您应阅读的其他一些StackOverflow答案和外部文章: