go语言float数值 go语言赋值

Go number

Go中数值类型可细分为整数、浮点数、复数三种,每种都具有不同的大小范围和正负支持。

创新互联公司是专业的鲁甸网站建设公司,鲁甸接单;提供成都网站设计、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行鲁甸网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

整型分为两大类

Go提供了有符号和无符号的整数类型,同时提供四种大小不同的整数类型。

取值范围

等价类型

特殊整型

int 和 uint 分别对应特定CPU平台的字长(机器字大小),大小范围在 32bit 或 64bit 之间变化,实际开发中由于编译器和硬件不同而不同。

进制转换

转换函数

使用注意

字节长度

Golang提供了两种精度的浮点数分别为 float32 和 float64 ,它们的算术规范由IEEE754浮点数国际标准定义,IEEE754浮点数标准被现代CPU支持。

float32 类型的浮点数可提供约6个十进制数的精度, float64 类型的浮点数可提供约15个十进制数的精度。通常会优先选择使用 float64 ,因为 float32 累计计算误差会比较容易扩散。

计算机中复数(complex)由两个浮点数表示,一个表示实部(real)一个表示虚部(imag)。

Go语言中复数的值由三部分组成 RE + IMi ,分别是实数部分 RE 、虚数部分 IM 、虚数单位 i , RE 和 IM 均为 float 。

Go语言提供两种类型的复数,分别是 complex64 即32位实数和虚数, complex128 即64位实数和虚数, complex128 为复数的默认类型。

复数声明

z 表示复数的变量名, complex128 表示复数类型, complex() 内置函数用于为复数赋值。 x 和 y 分别表示构成该复数的两个 float64 类型的值, x 为实部, y 为虚部。

简写形式

对于 z 值可通过内置函数 real(z) 获取该复数的实部,使用 imag(z) 获取虚部。

Golang Float高精度计算,无误差

Golang Float乘Float高精度,转Int高精度。

使用big.Float

bigF1 := new(big.Float).SetFloat64(f1)

bigF2 := new(big.Float).SetFloat64(f2)

mul := new(big.Float).Mul(bigF1, bigF2)

转Int,先用上面的方法转为big.Float,再用.String转为字符串。

new(big.Int).SetString(bigFloat, 10) // 即可转为big.Int

// big.Int可转为常用的int类型。

// big.Float可转为常用的Float类型。

// big.Float不能直接转为Int类型。

func Sub(x float64, y float64, more ...float64) float64 {

floatX := new(big.Float).SetFloat64(x)

floatY := new(big.Float).SetFloat64(y)

result := new(big.Float).Sub(floatX, floatY)

if len(more) 0 {

  for _, m := range more {

    floatM := new(big.Float).SetFloat64(m)

    result = new(big.Float).Sub(result, floatM)

}

}

f, _ := strconv.ParseFloat(result.String(), 64)

return f

}

为什么 GOlang的float型后面要加32或64?

这样子来讲:float和int都是固定长度的,4字节(32位机子)

int是精确的,超出范围就溢出了。数据错误了。

而float并不是单纯的101010这样存储,是把4个字节划分为

符号位,指数位,尾数位 比如1.123123*10^35;

3个部分固定的,因为有指数,存储的范围当然比int大了。

但是3个部分也有范围限制,所以当你精度值越大时,月不精确了。


文章题目:go语言float数值 go语言赋值
网站URL:http://ybzwz.com/article/dophsjd.html