go的float和int怎么玩啊

怎么没找到互相转换的方法啊,四舍五入之类,还有小数点保留截取什么的,难道都统一转成string再玩?

共 11 个回复


jimmykuu

int(1.1)
float64(1)

int会自动四舍五入。

# 1

heimeil

@jimmykuu go对这方面的操作不是蛮好用,有点蛋疼的感觉

# 2

jimmykuu

Go的强类型确实很强制,上次体会到这个了,一行代码中一堆类型转换,float64和int转来转去。

# 3

stevewang

已经有库支持了,怎么说不好用?

package main

import(
    "fmt"
    "math"
)

func main() {
    fmt.Println(math.Trunc(1.234))
    fmt.Println(math.Trunc(-1.234))
    fmt.Println(math.Floor(1.234))
    fmt.Println(math.Floor(-1.234))
    fmt.Println(math.Ceil(1.234))
    fmt.Println(math.Ceil(-1.234))
}
# 4

heimeil

@stevewang 这方面总体比不上别的语言好用

# 5

ThoseFlowers

确实不方便,但可以避免一些隐晦的错误

# 6

stevewang

比不上哪些语言好用?有没有代码贴出来比较一下?

# 7

David

多打几个字符有时候能省掉几天的调 bug 时间

# 8

heimeil

@stevewang 只是想吐槽一下go的方法好原始

# 9

facat

@heimeil 设计思路不一样,更严谨,避免出错。

# 10