go中浮点型用法总结

Posted goujian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go中浮点型用法总结相关的知识,希望对你有一定的参考价值。

示例
// 浮点型的用法
package main

import (
    "fmt"
    "unsafe"
)

func main() {
    // 如果浮点数声明时未指定变量的类型
    // 默认为 float64 类型
    var n1 = 3.99
    fmt.Printf("n1的值为 %g, 类型是 %T, 占 %d 个字节
", n1, n1, unsafe.Sizeof(n1)) // n1的值为 3.99, 类型是 float64, 占 8 个字节

    // 使用类型推导
    n2 := 4.567
    fmt.Printf("n2的值为 %g, 类型是 %T, 占 %d 个字节
", n2, n2, unsafe.Sizeof(n2)) // n2的值为 4.567, 类型是 float64, 占 8 个字节

    // 声明为 float32 类型
    var n3 float32 = 1.6789
    fmt.Printf("n3的值为 %g, 类型是 %T, 占 %d 个字节
", n3, n3, unsafe.Sizeof(n3)) // n3的值为 1.6789, 类型是 float32, 占 4 个字节

    // 在用Printf进行格式化输出时,最好用 %g或%G 进行
    // 格式化输出,如果用 %f 的话可能会造成精度丢失导
    // 致数据不准确
    var f1 float32 = 1.2098
    fmt.Println("f1 =", f1) // f1 = 1.2098
    fmt.Printf("f1 = %f
", f1) // f1 = 1.209800
    fmt.Printf("f1 = %g
", f1) // f1 = 1.2098
    fmt.Printf("f1 = %G
", f1) // f1 = 1.2098
    fmt.Printf("f1 = %e
", f1) // f1 = 1.209800e+00
    fmt.Printf("f1 = %E
", f1) // f1 = 1.209800E+00

    // 负的浮点型
    f2 := -35412378.431267890112
    fmt.Printf("f2 = %f, %g, %G, %e, %E
", f2, f2, f2, f2, f2) // f2 = -35412378.431268, -3.541237843126789e+07, -3.541237843126789E+07, -3.541238e+07, -3.541238E+07

    // 使用float32类型时,有时尾数部分可能丢失,造成精度损失
    // 所以在开发中最好使用float64类型来声明浮点型变量
    var f3 float32 = 444.000068889955
    var f4 float64 = 444.000068889955
    fmt.Println("f3 =", f3, "f4 =", f4) // f3 = 444.00006 f4 = 444.000068889955
    fmt.Printf("f3 = %f, %g, %G, %e, %E
", f3, f3, f3, f3, f3) // f3 = 444.000061, 444.00006, 444.00006, 4.440001e+02, 4.440001E+02
    fmt.Printf("f4 = %f, %g, %G, %e, %E
", f4, f4, f4, f4, f4) // f4 = 444.000069, 444.000068889955, 444.000068889955, 4.440001e+02, 4.440001E+02
}
总结

技术图片

以上是关于go中浮点型用法总结的主要内容,如果未能解决你的问题,请参考以下文章

go-09-类型转换

go-09-类型转换

Go语言第十四篇:Go语言基础总结

go-07-数据类型-浮点型

go-07-数据类型-浮点型

go语言基础-数据类型- 整型,浮点型,布尔型