[Swift]String Relative

1. String To numeric value

//在OC中,如果对一个16.8的字符串转为integerValue时
会从前向后寻找,找到第一位小数点时
将小数点后面的内容连并该小数点一起舍掉
然后转换为NSInteger对象.
    NSString *str = @"16.8";
    NSInteger i = str.integerValue;
    NSLog(@"%zd", i); //输出16
/*在Swift中,就没有这么简单了.
首先你根本无法像OC一样,使用`.integerValue`如此简单的转换方法.
欲知详情,还请各位看官接着看我的代码*/
var numberStr = "17.8"
let numeric = Int(numberStr)
print(numeric) 
/*
输出"nil"
 你看吧,对一个含有小数点的字符串进行强转,不由分说,直接失败处理,就是这么不讲道理.
 不过这里我已经在无意之间表示出了怎样用Swift进行字符串和数值的转换.同理:
 */
let dValue = Double(numberStr);
print(dValue) 
/* 
输出"Optional(17.800000000000001)\n"
我数了数一共17位,最后一位是1,可见double类型还是有误差的,而且还是可选值呢.
那么试想:
如果拿dValue去和17.8比较,就因为那么一点点小小的误差就会导致结果不对呢?
但是,如果你真的拿dValue在if里面进行判断的时候,肯定会报错
因为可选值不能直接进行判断,要么用iflet,guardlet或者!进行解包.
一旦解包,那么就会把多余的0给舍去
即17.800000000000001为17.8.*/
//大致就是这样了.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值