linux小数类型,linuxea:go浮点数float类型简述(9)

5c1967c5325842cec010c6abd3e07965.gif

在go中浮点有两种类型,一种是float64,一种是float32。一般使用float64即可

定义与赋值

默认是0值

package main

import "fmt"

func main(){

var floatt float64

fmt.Println(floatt)

}

运行

[root@LinuxEA /opt/Golang]# go run float.go

0

赋值

var floatt float64

floatt = 1.666

package main

import "fmt"

func main(){

var floatt float64

floatt = 1.666

fmt.Printf("%T %f",floatt,floatt)

}

运行

[root@LinuxEA /opt/Golang]# go run float.go

float64 1.666000

字面量

字面量 也分为十进制表示法和科学技术表述法

十进制表示法

如:1.666 ,2.666

floatt = 1.666

科学技术表述法

如:

floatt = 12.02E1

这需要换算

算数运算

+,-,*,/,++,--。在float中通常不进行自增和自减,而且也不支持(%)余运算

fmt.Println(1.11 + 1.2)

fmt.Println(1.11 - 1.2)

fmt.Println(1.11 * 1.2)

fmt.Println(1.11 / 1.2)

运行结果

[root@LinuxEA /opt/Golang]# go run float.go

2.31

-0.09

1.332

0.925

与整数一样,被除数的不能为0

自增和自减

floatt = 1.063

floatt++

fmt.Println(floatt)

floatt--

fmt.Println(floatt)

运行结果

[root@LinuxEA /opt/Golang]# go run float.go

2.0629999999999997

1.0629999999999997

!!! note

> 浮点数不是精确存储,在加减过程中会有一定的精度损耗。

> 如上述中的 1.063在运算后精度损耗会变大,打印时候是1.0629999999999997

关系运算

由于有精度损耗,对于浮点数来说,不计算等于和不等于。 一般来讲之计算大于>,大于等于>=,小于

fmt.Println(1.11 > 1.2)

fmt.Println(1.11 >= 1.2)

fmt.Println(1.11 < 1.2)

fmt.Println(1.11 <= 1.2)

运行结果

[root@LinuxEA /opt/Golang]# go run float.go

false

false

true

true

等于判断

判断浮点数是否等于,可以先进行相减,而后在做比较区间值。如下:

最终的判断取决于精确到的位数

fmt.Println(1.11 - 1.2 <= 0.005)

运行结果

[root@LinuxEA /opt/Golang]# go run float.go

true

浮点数是没有位运算的,直接看赋值运算

赋值运算

等于=,加等于+=,减等于-=,乘等于*=,除等于/=

floatt = 1.063

floatt += 2.25

fmt.Println(floatt)

floatt -= 2.25

fmt.Println(floatt)

floatt *= 2

fmt.Println(floatt)

floatt /= 2

fmt.Println(floatt)

运行结果

[root@LinuxEA /opt/Golang]# go run float.go

3.3129999999999997

1.0629999999999997

2.1259999999999994

1.0629999999999997

类型转换

我们知道,默认的是float64。现在转到float32。float32(zsh) 转换到float32

zsh := 1.16389366

fmt.Printf("%T %T\n",zsh,float32(zsh))

fmt.Println(zsh,float32(zsh))

运行

[root@LinuxEA /opt/Golang]# go run float.go

float64 float32

1.16389366 1.1638937

!!! Warning

>如果数据太大,转换后会进行截断

保留数

比如,现在我要保留五位,并且包含3个小数点-%5.3f。如下:

如果小数点和位数不满足,将用空格替代

fmt.Printf("%5.3f\n",zsh)

运行

[root@LinuxEA /opt/Golang]# go run float.go

1.164

complex复数

Go提供了两种大小的复数类型:complex64和complex128,分别由float32和float64组成。内置函数complex从指定的实部和虚部构建复数,内置函数real和imag用来获取复数的实部和虚部:

如果一个浮点数的字面量后面跟着一个i,例如2i,那么它将变成一个复数的虚部,这个复数的实部是0:

ii := 1 + 2i

fmt.Printf("%T %v",ii,ii)

运行

[root@marksugar /opt/Golang]# go run float.go

complex128 (1+2i)

complex128是指实部和虚部都使用的是float64

除非另有说明,否则本站上的内容根据以下许可进行许可: CC署名-非商业性使用-相同方式共享4.0国际许可协议4.0进行许可

本文作者:www.linuxea.com for Mark

文章链接:http://www.linuxea.com/2481.html (转载请注明本文出处和本章链接)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值