Golang的基础数据类型-浮点型
Golang的基础数据类型-浮点型
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.浮点型概述
Go语言提供两种精度的浮点数,即float32和float64,其中float32占用4个字节大小,而float64占用8个字节大小。 这些浮点数类型的取值范围极限值可以在Golang的math包中找到: 常量math.MaxFloat32表示folat32能取到的最大数值,如下图所示,Go语言定义为:3.40282346638528859811704183484516925440e+38;
常量math.SmallestNonzeroFloat32表示folat32能取到的最小数值,如下图所示,Go语言定义为:1.401298464324817070923729583289916131280e-45 常量math.MaxFloat64表示folat64能取到的最大数值,如下图所示,Go语言定义为:1.797693134862315708145274237317043567981e+308; 常量math.MaxFloat64表示folat64能取到的最小数值,如下图所示,Go语言定义为:4.940656458412465441765687928682213723651e-324; 浮点数都是相对精准的,存在一定的误差: float32类型的浮点数可以提供约6个十进制数的精度,即按照四舍五入法默认小数点后保留六位。 float64类型的浮点数可以提供约15个十进制数的精度,即按照四舍五入法默认小数点后保留十五位。 通常应该优先使用float64类型,因为float32类型的累计祭祀按无法很容易扩散,并且float32能精确表示正整数并不是很大。
二.浮点型简单应用案例
1>.单精度浮点型float32应用案例
2>.双精度浮点型float64应用案例
package main import ( "fmt" ) func main() { /* 温馨提示: 自动推导类型命名的浮点数类型默认为float64. */ a := 3.141592653589 var b float64 = 1.618033988749 /* 3.141592653589 x 1.618033988749 = 5.083203592311165 但是单精度浮点型小数点后默认保留六位,最终结果四舍五入法得到的结果为:5.083204 */ var c float64 = a * b fmt.Printf("a的类型为:[%T],a的值为:[%f]\n", a, a) fmt.Printf("b的类型为:[%T],b的值为:[%f]\n", b, b) fmt.Printf("c的类型为:[%T],c的值为:[%f]\n", c, c) fmt.Printf("a x b = %f\n", c) /* %.1f: 表示小数点后按照四舍五入法保留1位有效数字 %.2f: 表示小数点后按照四舍五入法保留2位有效数字 %.3f: 表示小数点后按照四舍五入法保留3位有效数字 ...: 综上所述,依此类推即可.... */ fmt.Printf("a x b = %.1f\n", c) fmt.Printf("a x b = %.2f\n", c) fmt.Printf("a x b = %.3f\n", c) }
3>.使用浮点数的注意事项
package main import ( "fmt" ) func main() { /* 使用浮点数注意事项: (1)默认浮点数类型为float64; (2)浮点数的简写形式,生产环境中并不推荐大家这样写,可读性差. 1>.如果小数部分为0,可以省略整数部分 2>.如果小数部分为0,可以省略小数部分 (3)使用科学计数法表示数据 可以使用%e占位符来表示科学计数法,了解即可,生产环境中使用相对较少。 */ //整数部分为0可以省略不写 a := .1234 fmt.Printf("a的类型为:[%T],a的值为:[%f]\n", a, a) //小数部分为0可以省略不写 b := 1. fmt.Printf("b的类型为:[%T],b的值为:[%f]\n", b, b) c := 50832036.9 fmt.Printf("c的类型为:[%T],c的值为:[%f]\n", c, c) //使用科学计数法表示变量c对应的值e d := 5.08320369e7 fmt.Printf("d的类型为:[%T],d的值为:[%f]\n", d, d) fmt.Printf("d的类型为:[%T],d的值使用科学计数法表示为:[%e]\n", d, d) fmt.Printf("d的类型为:[%T],d的值使用科学计数法表示为:[%E]\n", d, d) }
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。 欢迎加入基础架构自动化运维:598432640,大数据SRE进阶之路:959042252,DevOps进阶之路:526991186