编程基础知识之浮点型
2015-12-05 22:10
441 查看
浮点型用于表示包含小数点的数据,比如1.234就是一个浮点型数据。Go语言中的浮点类型采用IEEE-754标准的表达方式。
1. 浮点数表示
Go语言定义了两个类型float32和float64,其中float32等价于C语言的float类型,float64等价于C语言的double类型。
在Go语言里,定义一个浮点数变量的代码如下:
var fvalue1 float32
fvalue1 = 12
fvalue2 := 12.0 // 如果不加小数点,fvalue2会被推导为整型而不是浮点型
对于以上例子中类型被自动推导的fvalue2,需要注意的是其类型将被自动设为float64,而不管赋给它的数字是否是用32位长度表示的。因此,对于以上的例子,下面的赋值将导致编译错误:
fvalue1 = fvalue2
而必须使用这样的强制类型转换:
fvalue1 = float32(fvalue2)
2. 浮点数比较
因为浮点数不是一种精确的表达方式,所以像整型那样直接用==来判断两个浮点数是否相等是不可行的,这可能会导致不稳定的结果。
下面是一种推荐的替代方案:
import "math"
// p为用户自定义的比较精度,比如0.00001
func IsEqual(f1, f2, p float64) bool { return math.Fdim(f1, f2) < p }
1. 浮点数表示
Go语言定义了两个类型float32和float64,其中float32等价于C语言的float类型,float64等价于C语言的double类型。
在Go语言里,定义一个浮点数变量的代码如下:
var fvalue1 float32
fvalue1 = 12
fvalue2 := 12.0 // 如果不加小数点,fvalue2会被推导为整型而不是浮点型
对于以上例子中类型被自动推导的fvalue2,需要注意的是其类型将被自动设为float64,而不管赋给它的数字是否是用32位长度表示的。因此,对于以上的例子,下面的赋值将导致编译错误:
fvalue1 = fvalue2
而必须使用这样的强制类型转换:
fvalue1 = float32(fvalue2)
2. 浮点数比较
因为浮点数不是一种精确的表达方式,所以像整型那样直接用==来判断两个浮点数是否相等是不可行的,这可能会导致不稳定的结果。
下面是一种推荐的替代方案:
import "math"
// p为用户自定义的比较精度,比如0.00001
func IsEqual(f1, f2, p float64) bool { return math.Fdim(f1, f2) < p }
相关文章推荐
- java中的变量(成员变量、本地变量、类变量)
- 交换机的Vlan /TRUNK/VTP配置
- 车牌定位matlab程序:通过hsv彩色分割方式定位车牌
- SpringMVC深度探险(一) —— SpringMVC前传
- python scikit learn 文本分类
- 在SpringMVC利用MockMvc进行单元测试
- Django 数据导入
- spring mvc 框架搭建及详解
- C++虚析构函数
- Spring的MVC相比Structs2有什么优点
- POJ 2007 Scrambled Polygon (凸包输出点路径)
- 异步调用实现java
- python核心编程-lambda
- 实例详解Spring MVC入门使用
- Java使用DOM解析XML
- VS常用快捷键
- 简单PHP会话(session)说明
- Spring MVC集成Tiles框架
- PHP面向对象 1.7 常见的魔术方法及应用
- 《python爬虫实战》:爬糗百上的段子