浮點(diǎn)類型
成都創(chuàng)新互聯(lián)成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元洛川做網(wǎng)站,已為上家服務(wù),為洛川各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
是有小數(shù)部分的數(shù)字。表示的范圍比整數(shù)類型更大,可存儲(chǔ)比Int類型更大或更小的數(shù)字。
提供了3種表示形式:
(1)Float 表示32位浮點(diǎn)數(shù),可精確到小數(shù)點(diǎn)后6位。
(2)Double 表示64位浮點(diǎn)數(shù),可精確到小數(shù)點(diǎn)后15位。
(3)Float80 表示80位浮點(diǎn)數(shù),可精確到小數(shù)點(diǎn)后17位。
※Float32和Float64分別是Float和Double的類型別名
var floatv:Float = 0.12345678912345 //0.1234568 var floatv2:Float = 123.123456789 // 123.1235 var doublev:Double = 0.1234567890123456789123 //0.1234567890123457 var doublev2:Double = 1234.1234567890456789 //1234.123456789046 var float80v:Float80 = 0.12345678901234567891234 //0.123456789012345679 var float80v2:Float80 = 1234.1234567890456789 //1234.12345678904568 float80v = 0.123456789123456789123456789678 //0.123456789123456789 float80v = 3.123456789123456789123456 //3.12345678912345679 float80v = 3.1234567890123456789123456 //3.12345678901234568 var float32v:Float32 = 32.14159 //Float typealias var float64v:Float64 = 3.141591242342342343 //Double typealias
選用何種浮點(diǎn)類型,取決于所存儲(chǔ)的浮點(diǎn)數(shù)的范圍,通常情況下,推薦使用Double類型。
如果聲明變量或常量時(shí),不指定數(shù)據(jù)類型,系統(tǒng)默認(rèn)將浮點(diǎn)類型的變量或常量推斷為Double類型。
var tmpva = 3.14159 //Double type
浮點(diǎn)類型的直接數(shù)有兩種表示形式:
(1)10進(jìn)制 沒有前綴
(2)16進(jìn)制 前綴是0x
小數(shù)點(diǎn)兩邊必須有至少一個(gè)10進(jìn)制數(shù)字或是16進(jìn)制數(shù)字。
還有一個(gè)可選的指數(shù)(exponent),在10進(jìn)制浮點(diǎn)數(shù)中通過大寫或小寫的e來指定,如:men = m乘以10的n次方
在16進(jìn)制浮點(diǎn)數(shù)中通過大寫或小寫的p來指定,如:0xmpn = m對(duì)應(yīng)的10進(jìn)制數(shù)乘以2的n次方
var tmpv1 = 3.14159e2 //314.159 var tmpv2 = 3.14159E-4 //0.000314159 var tmpv3 = 0xC.12p3 //96.5625 var tmpv4 = 0x0.12P3 //0.5625
和整數(shù)類型一樣,可以給浮點(diǎn)類型的直接數(shù)添加若干個(gè)0或_,以提供可讀性。
計(jì)算機(jī)在存儲(chǔ)浮點(diǎn)數(shù)的時(shí)候是不準(zhǔn)確,對(duì)于浮點(diǎn)數(shù)的比較需要格外小心。
比較可靠的做法是:比較其差的絕對(duì)值是否小于一個(gè)非常小的數(shù)值。
如果兩個(gè)不同浮點(diǎn)類型的變量或常量進(jìn)行運(yùn)算時(shí),必須進(jìn)行顯式的類型轉(zhuǎn)換,否則會(huì)產(chǎn)生編譯錯(cuò)誤。
var fv1:Float = 3.14159 var dv1:Double = 3.14159 //fv1 = dv1 //cannot assign value of type Double to type Float //dv1 = fv1 //cannot assign value of type Float to type Double fv1 = Float(dv1) dv1 = Double(fv1) // error binary operator + cannot be applied to operands of type Float and Double //fv1 + dv1 fv1 + Float(dv1) Double(fv1) + dv1
如果整數(shù)類型和浮點(diǎn)類型的變量或常量進(jìn)行運(yùn)算時(shí),必須進(jìn)行顯式的類型轉(zhuǎn)換,否則會(huì)產(chǎn)生編譯錯(cuò)誤。
當(dāng)把浮點(diǎn)類型轉(zhuǎn)換成整數(shù)類型時(shí),在該浮點(diǎn)數(shù)類型值不超出該整數(shù)類型所表示數(shù)值范圍的前提下,
浮點(diǎn)類型的值的小數(shù)部分會(huì)被截掉。
var intv:Int = 10 var dblv:Double = 3.14159 //intv = dblv //error cannot assign value of type Double to type Int intv = Int(dblv) //3 //dblv = intv //erro cannot assign value of type Int to type Double dblv = 3.14159 dblv = Double(intv) // error binary operator + cannot be applied to operands of type Int and Double //intv + dblv dblv = 3.14159 intv + Int(dblv) //6 Double(intv) + dblv ///6.14159
可以把整數(shù)類型的直接數(shù)直接賦值給浮點(diǎn)類型的變量或常量,
也可把整數(shù)類型的直接數(shù)和浮點(diǎn)類型的直接數(shù)進(jìn)行運(yùn)算,系統(tǒng)都會(huì)進(jìn)行隱式類型轉(zhuǎn)換。
但是把浮點(diǎn)類型的直接數(shù)賦值給整數(shù)類型的變量或常量,會(huì)產(chǎn)生編譯錯(cuò)誤。
dblv = 3 10 / 0.3 3.14159 + 10 //13.14159 //let cintv:Int = 4.14159 //cannot convert value of type Double to specified type Int //var tmpint:Int = 3.14159