String与Int、Double、Float等数字相互转换
2017-03-27 15:11
399 查看
Swift的三种转换模式
在Swift里面,Int、float、double等数字类型自成一派,但它们和String类型之间的转换总是不太方便,这里总结一下它们相互转换的方法。总结下来一共有三种转换模式,分别举例说明。
一、String转数字
这里以String类型转Int类型为例。String转其他的数字类型(Float、Double等)大同小异。主要用到的方法是String类型的toInt方法。注意这个方法返回的是Int?,即一个整数可选类型。所以需要解封。var string = "1234" var n:Int = 0 if let number = string.toInt(){ n = number }1
2
3
4
5
1
2
3
4
5
这样就得到了值为1234的的Int类型变量n。其实一开始我曾经想过,如果n没有值(也就是说还没有被赋值为0),解封又失败了,那么println(n)的结果会是什么呢,默认为0么?
不过仔细思考后发现,这种情况是不可能发生的。Swift是不会允许我们使用一个还没有初始化的变量的。否则编译器会报错:
Variable ‘n’ used before being initialized
有点扯远了,当然也可直接使用
var n = string.toInt()!1
1
不过强烈不建议这么用。即使你非常确定String一定是可以转成Int的。
二、数字转String
这里以Double类型转换String为例。比较一种简单的写法如下:var number = 123.5 var string = "\(number)"1
2
1
2
这样就得到了值为”123.5”的String类型变量string。不过如果要写成一个方法,使得number作为参数传递进来的话,这种简写就不行了。我们可以利用String类型的初始化方法。
var number = 123.5 var string = String(stringInterpolationSegment: number)1
2
1
2
之所以拿Double类型来写是因为,如果number是Int类型,直接调用String(number)即可生成一个String类型的变量,而现在的number是Double类型,所以需要显式的加上外部变量名stringInterpolationSegment。这种写法对于Int类型依然成立,不过稍显麻烦,不过少了这个外部变量名,就无法将Double转为String了。
个人比较推荐第二种写法。
三、数字之间互转
了解数字和String如何转换之后,最后看一下最简单的数字类型之间的互转。这里以Double转Int为例。和C、Java、OC等语言类似,可以使用强制类型转换的方式:
var doubleNumber = 1.8 var intNumber = 0 intNumber = Int(doubleNumber) println(intNumber)1
2
3
4
1
2
3
4
这里的输出结果是1.也就是说doubleNumber不是四舍五入,而是精度丢失了。
或者使用严谨一点的构造方法来写:
var doubleNumber = 1.8 var intNumber = 0 intNumber = Int(doubleNumber) println(intNumber)1
2
3
4
1
2
3
4
输出结果依然是1
相关文章推荐
- Swift入门(九)——String与Int、Double、Float等数字相互转换
- [C++] string与int, float, double相互转换
- String与int、long、float、double等相互转换
- String、CString、char*、int、float、double相互转换
- VC 中 Cstring 与 int、float、double、char、string数据类型的相互转换
- c++ int,double等数字类型与string的相互转换
- VC 中 Cstring 与 int、float、double、char、string数据类型的相互转换
- java中String,int,Integer,char,Long,Float,Double,Date 类型转换
- String与int float double 类型之间的转换
- C# double float int string 与 byte数组 相互转化
- Android中 int,float,Double,String 互相转换
- C++中将string类型转换为int, float, double
- cstring转string,int,float,double,dword;全半角转换;切分替换函数;日期、序号产生函数
- C# double float int string 与 byte数组 相互转化
- c/c++ bytes与int,short,long,float,double相互转换
- [C++]string到double,float,int的转换
- C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
- 关于C++中string对象向int、float、double类型的转换的方法汇总
- C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
- C++中 char*, string, CString, int, double之间相互的转换