Golang语言基础数据类型之浮点型

                                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

1.浮点数概述

浮点数就是用于存储包含小数值的,比如: 3.14,9.18等等。

Go语言支持两种浮点型数:float32和float64。这两种浮点型数据格式遵循IEEE 754标准:
	float32的浮点数的最大范围约为3.4e38,可以使用常量定义:math.MaxFloat32,占用4字节。
	float64的浮点数的最大范围约为1.8e308,可以使用一个常量定义:math.MaxFloat64,占用8字节。
	
浮点数底层存储和操作系统无关,浮点类型底层存储: 符号位+指数位+尾数位,所以尾数位只是存了一个大概,很可能会出现精度的损失。

众所周知,浮点数的计算是不精确的(比如python的0.1+0.2),因此在做金融计算的场景我们常用的两种解决方案为:
	(1)将计算的数值转换成字符串进行计算;
	(2)将计算的数值转换成整数进行计算,比如计算前先将数字放大指定的倍数,计算完毕后再缩小相应的倍数;	

2.参考案例

package main

import (
	"fmt"
	"math"
)

func main() {

	var (
		// 定义浮点类型的数据,可以表示正浮点数,也可以表示负的浮点数
		a float32 = 3.1415926
		b float32 = -3.1415926
		// 浮点数可以使用十进制表示形式,也可以使用科学记数法表示,E大小写都可以哟~
		c float32 = 314e-2
		d float32 = 3.14E+3
		// 浮点数可能会有精度的损失,所以通常情况下,建议使用float64
		e float32 = 249.0000093
		f float64 = 249.0000093
		// Golang中默认的浮点类型为: float64
		g = 9.9
	)
	fmt.Printf("a=%f\nb=%f\nc=%f\nd=%f\ne=%f\nf=%f\ng=%f,g的类型为:%T\n", a, b, c, d, e,f,g,g)

	// 浮点数字面量语法
	fmt.Printf("%f\n", math.Pi) // 打印浮点数时,可以使用fmt包配合动词%f
	fmt.Printf("%.2f\n", math.Pi)
}
posted @ 2024-06-26 05:58  尹正杰  阅读(98)  评论(0编辑  收藏  举报