go中浮点型用法总结

时间:2019-11-05
本文章向大家介绍go中浮点型用法总结,主要包括go中浮点型用法总结使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
示例
// 浮点型的用法
package main

import (
    "fmt"
    "unsafe"
)

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

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

    // 声明为 float32 类型
    var n3 float32 = 1.6789
    fmt.Printf("n3的值为 %g, 类型是 %T, 占 %d 个字节\n", 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\n", f1) // f1 = 1.209800
    fmt.Printf("f1 = %g\n", f1) // f1 = 1.2098
    fmt.Printf("f1 = %G\n", f1) // f1 = 1.2098
    fmt.Printf("f1 = %e\n", f1) // f1 = 1.209800e+00
    fmt.Printf("f1 = %E\n", f1) // f1 = 1.209800E+00

    // 负的浮点型
    f2 := -35412378.431267890112
    fmt.Printf("f2 = %f, %g, %G, %e, %E\n", 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\n", 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\n", f4, f4, f4, f4, f4) // f4 = 444.000069, 444.000068889955, 444.000068889955, 4.440001e+02, 4.440001E+02
}
总结

原文地址:https://www.cnblogs.com/goujian/p/11797764.html