Golang 学习手册
  • 主页
  • 安装
  • 参考资料
  • Q&A
  • 基础
    • Hello,world!
    • 包
    • 变量
    • 常量
    • 类型
      • 整型
      • 浮点型
      • 复数
      • 布尔型
      • 字符
      • 字符串
      • 数组
      • 切片
      • 字典
      • 指针
      • 方法
      • 结构体
      • 接口
      • 自定义类型
    • 语法
      • 判断
      • 循环
      • 错误处理
    • 协程
      • 锁
      • 等待组
      • 通道
      • 上下文
    • 测试与分析
      • 单元测试
      • 性能测试
      • 性能分析
    • 编译
      • 条件编译
      • 交叉编译
  • 高级
    • 存储
      • 键值存储
        • Etcd
    • HTTP
      • http服务基础
      • Websocket
      • 开源框架
        • Beego
        • Echo
        • Gin
        • Iris
        • Revel
        • 框架对比
      • Kubernetes风格API框架
    • RPC
      • RPCX
      • GRPC
      • grpc-gateway
    • 连接分发器
    • TLS加密
    • 链路追踪
      • skywalking
  • 项目管理
    • 代码规范
    • 包管理
    • 文档
      • GoDoc
      • Markdown
      • Swagger
    • 仓库管理
      • 分支管理
      • 问题管理
      • 里程碑管理
      • 发布管理
    • 持续集成
      • CircleCI
      • TravisCI
由 GitBook 提供支持
在本页

这有帮助吗?

在Git上编辑
  1. 基础
  2. 类型

浮点型

浮点型表示带小数位的数字,或称浮点数。

浮点型在内存中的表示包含三个部分:符号位,指数位和有效数字位

类型

长度(byte)

指数位(bit)

有效数字位(bit)

float32

4

8

23

float64

8

11

52

例子: 定义浮点型

var speed float32
speed = 35.75
height := 1.78

在对浮点数进行匿名赋值的时候,默认会识别为float64类型

浮点型不是绝对精确的数值类型,存在一定的误差,因此在进行浮点数的比较时,需要指定精度

例子:存在误差的浮点数比较

package main

import (
	"fmt"
)

func main() {
	var x, y = 3.1, 3.0
	fmt.Println(x-y == 0.1)
}

以上代码的执行输出结果会是false

例子:根据精度比较浮点数

package main

import (
	"fmt"
	"math"
)

func main() {
	var x, y float64 = 3.1, 3.0
	fmt.Println(IsEqual(x-0.1, y, 0.1))
}

// IsEqual 判断x是否大于y,precision为判断精度
func IsEqual(x float64, y float64, precision float64) bool {
	return math.Abs(x-y) < precision
}

以上代码的输出结果会是true

上一页整型下一页复数

最后更新于4年前

这有帮助吗?