Go语言趣学指南lesson6

实数

本章学习目标

1、学会用两种不同的类型表示实数

2、学会在内存占用和精确度之间进行取舍

go语言中实数就是表示为浮点数

声明浮点数类型

  • 下面三个语句的效果一样

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	day1 := 365.2425
    	var day2 = 365.2425
    	var day3 float64 = 365.2425
    	fmt.Printf("day1=%v\nday2=%v\nday3=%v\n", day1, day2, day3)
    }
    
    
    执行结果:
    
    day1=365.2425
    day2=365.2425
    day3=365.2425
    
  • 可以看出只要数字含有小数部分,那么它的类型就是float64

  • 如果使用一个整数来初始化某个变量,那么你必须指定它的类型为float64,否则它就是一个整数类型

浮点数类型

  • Go语言中有两种浮点数类型
  • 默认是float64
    • 64位的浮点类型占用8字节
    • 有些编程语言称为双精度
  • float32
    • 占用4字节
    • 精度比float64低
    • 有时叫做单精度类型
    • 声明时需要指定float32 例如 var pi32 float32 = math.Pi

单双精度的使用场景

当处理大量数据时,例如游戏,使用float32牺牲精度换内存很有意义。

浮点类型不适合金融计算。

零值

Go里面每个类型都有一个默认值称为零值,当你声明变量后不对它赋值,它值也叫做零值。

显示浮点类型(%f)

  • 使用Print或者Println打印浮点类型的时候,默认行为是尽可能的多显示几位小数;

  • 如果不想这样,那么你应该使用Printf函数,结合%f格式化动词来指定显示小数的位数

  • package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	third := 1.0 / 3
    	fmt.Println(third)
    	fmt.Printf("%v\n", third)    //%v 默认支持所以类型的格式化
    	fmt.Printf("%f\n", third)    //%f 浮点类型格式化
    	fmt.Printf("%.3f\n", third)  // %3.f显示3位小数
    	fmt.Printf("%4.2f\n", third) //%4.2f 总长为4、小数2位,包含小数点
    	fmt.Printf("%06.2f\n", third) //%06.2f 不足的位由0代替,默认是空格
    }
    
    
    
    执行结果:
    
    0.3333333333333333
    0.3333333333333333
    0.333333
    0.333
    0.33
    000.33
    
原文地址:https://www.cnblogs.com/walker1024/p/14171212.html