将NSString转换为Float - 添加小数位数? [英] Converting NSString to Float - Adds in Decimal Places?

查看:179
本文介绍了将NSString转换为Float - 添加小数位数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  21081.7 23447.6 2781.62 24207.4 18697.3 -2196.96 

将字符串保存为NSString,然后转换为浮点值(我将后来馈入OpenGL ES)

pre $ N $ C $ xPoint = [finishedParsingArray objectAtIndex:baseIndex];
NSLog(@xPoiint is%@,xPoint);

float x = [xPoint floatValue];

问题在于float x更改如下值:

'pre> 21081.699219,23447.599609,2781.620117,24207.400391,18697.300781,-2196.959961

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

我的问题是,如何将float与NSString / XML文件中的原始数字匹配到相同的小数位数?

预先感谢!

解决方案

你的问题似乎是你不明白浮动存储在内存中,不知道浮点数不精确



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



为了获得更好的准确性,请尝试使用 double改为。双确实遇到同样的问题,但更好的精度。花车约有6位有效数字;双打比两倍多。 Source



这里有一些其他的StackOverflow答案和外部文章,你应该阅读:



查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆