Golang的基础数据类型-浮点型

摘要:
5.083204*/varcfloat64=a*bfmt。Printf(“a的类型是:a)fmt.Printf(”b的类型是b)fmt。Printf(“c的类型为:c,值为:a)//如果小数部分为0,则可以省略。如果b:b,则值为:=50832036.9 fmt。Printf(”c,值是:c)//使用科学符号表示变量c ed:=5.08320369e7fmt对应的值。Printf(“d,类型为:

         Golang的基础数据类型-浮点型

                            作者:尹正杰

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

 

 

一.浮点型概述

  Go语言提供两种精度的浮点数,即float32和float64,其中float32占用4个字节大小,而float64占用8个字节大小。

  这些浮点数类型的取值范围极限值可以在Golang的math包中找到:
    常量math.MaxFloat32表示folat32能取到的最大数值,如下图所示,Go语言定义为:3.40282346638528859811704183484516925440e+38;
    常量math.SmallestNonzeroFloat32表示folat32能取到的最小数值,如下图所示,Go语言定义为:
1.401298464324817070923729583289916131280e-45     常量math.MaxFloat64表示folat64能取到的最大数值,如下图所示,Go语言定义为:1.797693134862315708145274237317043567981e+308;     常量math.MaxFloat64表示folat64能取到的最小数值,如下图所示,Go语言定义为:4.940656458412465441765687928682213723651e-324;   浮点数都是相对精准的,存在一定的误差:     float32类型的浮点数可以提供约6个十进制数的精度,即按照四舍五入法默认小数点后保留六位。     float64类型的浮点数可以提供约15个十进制数的精度,即按照四舍五入法默认小数点后保留十五位。   通常应该优先使用float64类型,因为float32类型的累计祭祀按无法很容易扩散,并且float32能精确表示正整数并不是很大。

Golang的基础数据类型-浮点型第1张

二.浮点型简单应用案例

1>.单精度浮点型float32应用案例

Golang的基础数据类型-浮点型第2张

2>.双精度浮点型float64应用案例

package main

import (
    "fmt"
)

func main() {
    /*
        温馨提示:
            自动推导类型命名的浮点数类型默认为float64.
    */
    a := 3.141592653589
    var b float64 = 1.618033988749
    /*
        3.141592653589 x 1.618033988749 = 5.083203592311165

        但是单精度浮点型小数点后默认保留六位,最终结果四舍五入法得到的结果为:5.083204
    */
    var c float64 = a * b

    fmt.Printf("a的类型为:[%T],a的值为:[%f]
", a, a)
    fmt.Printf("b的类型为:[%T],b的值为:[%f]
", b, b)
    fmt.Printf("c的类型为:[%T],c的值为:[%f]
", c, c)

    fmt.Printf("a x b = %f
", c)

    /*
        %.1f:
            表示小数点后按照四舍五入法保留1位有效数字
        %.2f:
            表示小数点后按照四舍五入法保留2位有效数字
        %.3f:
            表示小数点后按照四舍五入法保留3位有效数字
        ...:
            综上所述,依此类推即可....
    */
    fmt.Printf("a x b = %.1f
", c)
    fmt.Printf("a x b = %.2f
", c)
    fmt.Printf("a x b = %.3f
", c)
}

Golang的基础数据类型-浮点型第3张

3>.使用浮点数的注意事项

package main

import (
    "fmt"
)

func main() {
    /*
                使用浮点数注意事项:
                    (1)默认浮点数类型为float64;
                    (2)浮点数的简写形式,生产环境中并不推荐大家这样写,可读性差.
                        1>.如果小数部分为0,可以省略整数部分
                        2>.如果小数部分为0,可以省略小数部分
                    (3)使用科学计数法表示数据
                         可以使用%e占位符来表示科学计数法,了解即可,生产环境中使用相对较少。
    */

    //整数部分为0可以省略不写
    a := .1234
    fmt.Printf("a的类型为:[%T],a的值为:[%f]
", a, a)

    //小数部分为0可以省略不写
    b := 1.
    fmt.Printf("b的类型为:[%T],b的值为:[%f]
", b, b)

    c := 50832036.9
    fmt.Printf("c的类型为:[%T],c的值为:[%f]
", c, c)

    //使用科学计数法表示变量c对应的值e
    d := 5.08320369e7
    fmt.Printf("d的类型为:[%T],d的值为:[%f]
", d, d)
    fmt.Printf("d的类型为:[%T],d的值使用科学计数法表示为:[%e]
", d, d)
    fmt.Printf("d的类型为:[%T],d的值使用科学计数法表示为:[%E]
", d, d)
}

Golang的基础数据类型-浮点型第4张

 

 

 

免责声明:文章转载自《Golang的基础数据类型-浮点型》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spring 中的事件机制 ApplicationEventPublisherComposer PHP 依赖管理工具下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用sqlmap中tamper脚本绕过waf

使用sqlmap中tamper脚本绕过waf 刘海哥 · 2015/02/02 11:26 0x00 背景 sqlmap中的tamper脚本来对目标进行更高效的攻击。 由于乌云知识库少了sqlmap-tamper 收集一下,方便学习。 根据sqlmap中的tamper脚本可以学习过绕过一些技巧。 我收集在找相关的案例作为可分析什么环境使用什么tamp...

Oracle读取Blob数据-通过hibernate

通过hibernate向Oracle存储字节类型的数据(如byte[]等),在定义实体对象的时候不能用"private byte[] content", 这样定义我试过,在存储数据的时候(session.save(user))是没有问题的,但是在读取Blob字段(Oracle中存储byte[]使用的是"BLOB"类型)时就会出现问题,读出来的东西就成了乱码...

Canopy聚类算法

一、概念     与传统的聚类算法(比如K-means)不同,Canopy聚类最大的特点是不需要事先指定k值(即clustering的个数),因此具有很大的实际应用价值。与其他聚类算法相比,Canopy聚类虽然精度较低,但其在速度上有很大优势,因此可以使用Canopy聚类先对数据进行“粗”聚类,得到k值后再使用K-means进行进一步“细”聚类。这种Can...

IOS-基础知识

1 变量声明 变量的声明与C语言一样,在变量名前加类型名 以下这些数据类型是从C语言中直接拿来使用的: int n; unsigned int n; char n; unsigned char n; long n; float n; double n; 另外,Objective-C还扩展了一些数据类型,布尔类型用YES和NO来表示逻辑1和逻辑0...

打包成apk,生成apk文件,上传到网站服务器提供链接下载

Android开发把项目打包成apk: 做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们需要将自己的程序打包成Android安装包文件--APK(Android Package),其后缀名为".apk"。将APK文件直接上传到Android模拟器或Android手机中执行即可进行安装。Android系统要求具有其开发...

K8S单机版nacos

1.创建命名空间 [root@k8s-matser01 ~]# kubectl create ns nacos 2.编辑mysql的yaml文件 [root@k8s-matser01 ~]# cat mysql.yaml apiVersion: v1 kind: ReplicationController metadata: name: mysql...