数值处理

取整

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。格式字符串中,最好一律使用空格等空白字符分割。否则有坑。

 

posted on 2023-05-30 11:48  自然洒脱  阅读(54)  评论(0编辑  收藏  举报