package main import ( "fmt" "math" ) func main() { /*加减乘除,求余*/ fmt.Println("5+3=", 5+3) fmt.Println("5-3=", 5-3) fmt.Println("5*3=", 5*3) fmt.Println("5/3=", 5/3) fmt.Println("5%3=", 5%3) /*乘方和开方*/ fmt.Println("5^3=", math.Pow(5,3)) fmt.Println("125开3次方=", math.Pow(125.0, 1.0/3)) /* 四舍五入 负数的四舍五入原则:先对绝对值四舍五入,再加负号 */ fmt.Println("3.49的四舍五入", math.Round(3.49)) fmt.Println("-3.49的四舍五入", math.Round(-3.49)) fmt.Println("3.51的四舍五入", math.Round(3.51)) fmt.Println("-3.51的四舍五入", math.Round(-3.51)) /*纯舍,纯入*/ fmt.Println("3.99的四舍五入", math.Floor(3.99)) fmt.Println("3.01的四舍五入", math.Ceil(3.01)) /*绝对值*/ fmt.Println("-3.14的绝对值", math.Abs(-3.14)) /*三角函数:参数必须是弧度而不是角度*/ fmt.Println("30°的正弦=", math.Sin((30.0/180)*math.Pi)) fmt.Println("30°的余弦=", math.Cos((30.0/180)*math.Pi)) fmt.Println("30°的正切=", math.Tan((30.0/180)*math.Pi)) fmt.Println("30°的余切=", 1.0/math.Tan((30.0/180)*math.Pi)) /*反三角函数*/ fmt.Println("正弦为0.5的角度是", math.Asin(0.5)) //0.5235987755982989=30度的弧度表示 }
比较运算和逻辑运算
/*比较运算 比较运算符:>,<,==,!=,>=,<= 比较运算的结果是布尔值:true或false*/ /* 逻辑运算 逻辑与:两者都为真,结果才为真 逻辑或:两者只要有一个为真,结果就位真 逻辑非:非真为假,非假为真 */ func main() { a1 := (1+1==2)//true a0 := (1+1!=2)//false b1 := (1+1>=2)//true b0 := (1+1<2)//false fmt.Println(a1,a0,b1,b0) /*逻辑与*/ fmt.Println(a1 && b1)//true fmt.Println(a1 && b0)//false fmt.Println(a0 && b1)//false fmt.Println(a0 && b0)//false /*逻辑或*/ fmt.Println(a1 || b1)//true fmt.Println(a1 || b0)//true fmt.Println(a0 || b1)//true fmt.Println(a0 || b0)//false /*逻辑非*/ fmt.Println(!a1)//false fmt.Println(!a0)//true fmt.Println(!b1)//false fmt.Println(!b0)//true }
输出结果:
true false true false true false false false true true true false false true false true
位运算
/*位运算 & 按位与 两位都为1,结果才为1 | 按位或 只要有一位为1,结果就位1 ^ 按位异或 两位不相同,结果就为1,否则就为0 >> << */ func main() { //a := 23 //b := 34 var a uint8 = 23 var b uint8 = 34 fmt.Println(a & b)//2 fmt.Println(a | b)//55 fmt.Println(a ^ b)//53 /*移位运算*/ fmt.Println(a << 2)//92 fmt.Println(a >> 2)//5 /*左移的溢出 a为无符号8位整型,向左侧溢出后,最高位为数据位*/ fmt.Println(a << 4)//112 fmt.Println(a << 5)//1110,0000无符号为224 /*左移的溢出 a为有符号8位整型,向左侧溢出后,最高位为符号位---要考虑正负数问题 最高位为0,非负数 最高位为1,负数的反码,-1在取反得到绝对值*/ var c int8 = 23 fmt.Println(c << 5)//1110,0000有符号为-32 }
输出:
2 55 53 92 5 112 224 -32