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文件中的原始数字到相同的小数位数?
提前致谢 !
你的问题似乎是你不明白如何floats存储在内存中并且不知道浮点数不精确.
通常无法存储确切的值,因此系统会选择最接近的数字来表示它.如果仔细观察,可以看到每个输出的数字都非常接近您输入的值.
为了更好的准确性,请尝试使用double.Double确实遇到了同样的问题,但精度更高.浮动有大约6位有效数字; 双打比两倍多.资源
以下是您应阅读的其他一些StackOverflow答案和外部文章:
| 归档时间: |
|
| 查看次数: |
1397 次 |
| 最近记录: |