数值处理
取整
fmt.Println(1/2, 3/2, 5/2) fmt.Println(-1/2, -3/2, -5/2) fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~~~") fmt.Println(math.Ceil(2.01), math.Ceil(2.5), math.Ceil(2.8)) fmt.Println(math.Ceil(-2.01), math.Ceil(-2.5), math.Ceil(-2.8)) fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~~~") fmt.Println(math.Floor(2.01), math.Floor(2.5), math.Floor(2.8)) fmt.Println(math.Floor(-2.01), math.Floor(-2.5), math.Floor(-2.8)) fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~~~") fmt.Println(math.Round(2.01), math.Round(2.5), math.Round(2.8)) fmt.Println(math.Round(-2.01), math.Round(-2.5), math.Round(-2.8)) fmt.Println(math.Round(0.5), math.Round(1.5), math.Round(2.5), math.Round(3.5))
/ 整数除法,截取整数部分
math.Ceil 向上取整
math.Floor 向下取整
math.Round 四舍五入
其它数值处理
fmt.Println(math.Abs(-2.7)) // 绝对值 fmt.Println(math.E, math.Pi) // 常数 fmt.Println(math.MaxInt16, math.MinInt16) // 常量,极值 fmt.Println(math.Log10(100), math.Log2(8)) // 对数 fmt.Println(math.Max(1, 2), math.Min(-2, 3)) // 最大值、最小值 fmt.Println(math.Pow(2, 3), math.Pow10(3)) // 幂 fmt.Println(math.Mod(5, 2), 5%2) // 取模 fmt.Println(math.Sqrt(2), math.Sqrt(3), math.Pow(2, 0.5)) // 开方
标准输入
Scan:空白字符分割,回车提交。换行符当做空白字符
如果少一个数据,Scan就会阻塞;如果输入数据多了,等下回Scan读取。
package main import ( "fmt" ) func main() { var n int var err error var word1, word2 string fmt.Print("Plz input two words: ") n, err = fmt.Scan(&word1, &word2) // 控制台输入时,单词之间空白字符分割 if err != nil { panic(err) } fmt.Println(n) fmt.Printf("%T %s, %T %s\n", word1, word1, word2, word2) fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~~~") var i1, i2 int fmt.Println("Plz input two ints: ") n, err = fmt.Scan(&i1, &i2) if err != nil { panic(err) } fmt.Println(n) fmt.Printf("%T %[1]d, %T %[2]d", i1, i2) }
Scanf:读取输入,按照格式匹配解析。如果解析失败,立即报错,那么就会影响后面的Scanf。
如果少一个数据,Scan就会阻塞;如果输入数据多了,等下回Scan读取。
Scanf:读取输入,按照格式匹配解析。如果解析失败,立即报错,那么就会影响后面的Scanf。格式字符串中,最好一律使用空格等空白字符分割。否则有坑。