golang 浮点数比较注意点。去

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 浮点数比较注意点。去相关的知识,希望对你有一定的参考价值。

func main() {
   var f1 float32 = 1.1
   var f2 float32 = 1.2
   var f3 float32 = f1 + f2 // +2.300000e+000
   println(f3 == 2.3)
}
// false

func main() {
   var f1 float64 = 1.1
   var f2 float64 = 1.2
   var f3 float64 = f1 + f2 // +2.300000e+000
   println(f3 == 2.3)
}
// true


/////////////////////////////////////////////
// 两个浮点数的差值小于此值时表示这两个浮点数相等
var deltaFloat64 float64 = 0.000001 // 0.0000000001

func IsFloat64Equal(f1, f2 float64) bool {
	return math.Abs(f1-f2) < deltaFloat64
}

func TestIsFloat64Equal(t *testing.T) {
	convey.Convey("IsFloat64Equal", t, func() {
		var f1 float32 = 1.1
		var f2 float32 = 1.2
		var f3 float32 = f1 + f2
		//t.Logf("float32(1.1+1.2) = %.10f", float32(1.1) + float32(1.2))
		t.Logf("float32(1.1+1.2) = %.10f", f3)
		rs := IsFloat64Equal(float64(f3), 2.3)
		convey.So(rs, convey.ShouldBeTrue)

		var f4 float64 = 1.1
		var f5 float64 = 1.2
		var f6 float64 = f4 + f5
		t.Logf("float64(1.1+1.2) = %.10f", f6)
		rs2 := IsFloat64Equal(float64(f6), 2.3)
		convey.So(rs2, convey.ShouldBeTrue)
	})
}
// passed
/////////////////////////////////////////////

H. 浮点数

一,浮点数的2种表示形式

 二,浮点数使用的注意事项
       ①浮点数不应进行大小比较

       ②小数转二进制的做法:乘2并顺序取整数部分


       ③当整数运算的结果超出整数的范围后,会自动转换为浮点数

以上是关于golang 浮点数比较注意点。去的主要内容,如果未能解决你的问题,请参考以下文章

php浮点数比较

golang 浮点数 取精度的效率对比

C语言编程中怎么自动去掉浮点数小数点后没用的0。

H. 浮点数

浮点数的那点事

IEEE754二进制浮点数算术标准