美文网首页
go语言中的float类型

go语言中的float类型

作者: CurryCoder | 来源:发表于2020-10-11 21:05 被阅读0次
    package main
    
    import (
        "fmt"
        "math"
    )
    
    func main(){
        // 声明浮点类型变量
        // 以下三种声明方式均是等价的
        days := 3.1415
        // var days = 3.1415
        // var days float64 = 3.1415
        // 只要数字含有小数部分,那么它的类型就是float64
        fmt.Println("days =", days)
        // 如果你使用一个整数来初始化某个变量,那么你必须指定它的类型为float64,否则它就是一个整数类型
        var answer float64 = 42
        fmt.Printf("answer = %f\n", answer)
    
        year := 2020
        fmt.Println("year =", year)
    
        /* 单精度浮点数类型 */
        // Go语言中有两种浮点数类型:
            // 1.默认是float64
                // a.64位的浮点类型
                // b.占用8个字节内存
                // c.某些编程语言把这种类型称为double
            // 2.float32
                // a.占用4个字节内存
                // b.精度比float64低
                // c.有时候也叫单精度类型
        
        // 想使用单精度类型,必须在声明变量时指定该类型
        var pi64 = math.Pi
        var pi32 float32 = math.Pi
        fmt.Println("pi64 =", pi64)
        fmt.Println("pi32 =", pi32)
    
        /* 单精度的使用场景 */
            // 1.当处理大量数据时,例如3D游戏中的数千个顶点,使用float32牺牲精度来节省内存是有意义的
            // 2.math包中的函数操作都是float64类型,所以应该首选使用float64,除非你有足够的理由不去使用它
        
        
        /* 零值 */
            // go语言中每个类型都有一个默认值,称为零值
            // 当你声明变量却不对其进行初始化时,它的值就是零值
        var price float64
        fmt.Println("price =",price)
    
        /* 显示浮点类型 */
            // 1.使用Print或Println打印浮点类型时,默认的行为是尽可能多显示几位小数
            // 2.如果你不想这样,那么应该使用Printf函数,结合%f格式化动词来指定显示小数的位数
        third := 1.0 / 3
        fmt.Println("third =",third)
        fmt.Printf("thirdv = %v\n", third)
        fmt.Printf("thirdf = %f\n", third)
        fmt.Printf("third3f = %.3f\n", third)  // %.3f小数点后保留3位
        fmt.Printf("third42f = %4.2f\n", third) // %4.2f包含小数点共4位,其中小数点后保留2位
    
        second := 11 / 3
        fmt.Println("second =",second)  // 3
    
        /* %f格式化动词 */
        // 它有两部分组成:宽度 + 精度
            // 宽度:会显示出的最少字符个数(包含小数点和小数)
                // a.如果宽度大于数字的个数,那么左边会填充空格
                // b.如果没有指定宽度,那么就按实际的位数进行显示
            
            // 精度:小数点后面显示的位数
    
        // 如果想使用0代替空格作为填充
        fmt.Printf("%05.2f\n", third)
    
        first := 21.0 / 5.0
        fmt.Println(first)
    
        // 如何比较两个浮点数
        payment := 0.1
        payment += 0.2
        fmt.Println(payment == 0.3)
    
        // 正确的做法
        fmt.Println(math.Abs(payment - 0.3) < 0.0001)
    }
    

    相关文章

      网友评论

          本文标题:go语言中的float类型

          本文链接:https://www.haomeiwen.com/subject/grcypktx.html