package main
import (
"fmt"
"math"
"testing"
)
/**
1、浮点类型float64,声明的三种方式,go带小数的默认设置为float64
2、单精度浮点数float32,必须显式声明
3、每种类型的默认值称为零值
4、0.0等价0
*/
func Test(t *testing.T) {
num1 :=3.444
var num2 =3.444
var num3float64 =3.444
fmt.Println(num1, num2, num3)
var num4float32 =3.5555
fmt.Println(num4)
var num5float64
fmt.Println(num5)
num6 :=0.0
fmt.Println(num6)
var num7float32
fmt.Println(num7)
}
/**
1、不能直接比较浮点数
2、go有15种数值类型
*/
func Test2(t *testing.T) {
num1 :=0.1
num2 :=0.2
fmt.Println(num1+num2 ==0.3)
fmt.Println(math.Abs(num1+num2-0.3) <0.0001)
}
/**
1、默认是int类型
2、int有正负,uint只有正
3、int8、uint8、int16、uint16、int32、uint32、int64、uint64
4、int和uint会根据目标硬件选择最合适的位长
5、%T打印类型,%v代表格式化变量
6、十六进制用哪个%x
7、当出现超过整数类型的取值范围时,就会出现整数回绕现象
8、%b打印出二进制格式相应的整数值
*/
func Test3(t *testing.T) {
num :=1
var num0 =1
var num1int =1
fmt.Println(num, num0, num1)
var red, green, blueuint8 =0x00, 0x8d, 0xd5
fmt.Println(red, green, blue)
fmt.Printf("%x,%x,%x", red, green, blue)
}
/**
1、uint64最大存储10的18次幂
2、big包有三种类型big.Int、big.Float、big.Rat(分数)
3、使用方法1big.NewInt,传递int64,方法2使用SetString
4、go不会为常量推断类型,而是直接为其推断为无类型(untyped)
*/
func Test4(t *testing.T) {
var numint64 =41.3e12
fmt.Println(num)
fmt.Printf("%T\n", num)
l :=big.NewInt(11111)
fmt.Println(l)
l1 :=new(big.Int)
l1.SetString("10000000000000000000000000000000", 10)
fmt.Println(l1)
}