这是Xcode 7.3.1 playground中的一个简单代码:
var str = "8.7"
print(Double(str))
输出结果令人惊讶:
Optional(8.6999999999999993)
还,Float(str)给出:8.69999981
对这个家伙的任何想法或理由?任何对此的参考将不胜感激.
另外,我应该如何将"8.7"转换为8.7为Double(或Float)?
编辑
在swift中:
(str as NSString).doubleValue返回8.7
现在,那没关系.但我的问题仍然没有得到完整答案.我们找到了另一种选择,但为什么我们不能依赖Double("8.7").请更深入地了解这一点.
编辑2
("6.9"as NSString).doubleValue //打印6.9000000000000004
所以,问题又开始了.
一个非常基本的问题......但是理解概念真的非常重要..在c ++或c语言中,我们通常不使用指针变量来存储值.即,值的存储方式简单如下:
int a=10;
Run Code Online (Sandbox Code Playgroud)
但是在ios sdk中,在目标c中,我们使用的大多数对象都是通过用它们表示指针来初始化的,如:
NSArray *myArray=[NSArray array];
Run Code Online (Sandbox Code Playgroud)
所以,在我的脑海中出现的问题是,使用指针对象的好处和需求是什么(这就是我们在这里所称的,如果它不正确,请,请告诉我们.)我也有时会感到困惑使用指针对象进行分配时的内存分配基础.我可以在任何地方寻找好的解释吗?