无法将 'float64' 类型的表达式转换为类型 'int64'


package main
import (
"fmt"
)
func main(){
//float to int
fmt.Println(int64(1.9))
}

我有语法错误";无法将"float64"类型的表达式转换为"int64"类型",如何纠正?

类型转换对常量有特殊规则:

如果x可由T.的值

甚至给出了以下示例:

int(1.2)                 // illegal: 1.2 cannot be represented as an int

如果您真的坚持将浮点值截断为int,请使用变量作为中介,将其转换为非常量转换。Go将很乐意进行转换并删除小数部分,如规范中进一步提到的:

将浮点数转换为整数时,分数为丢弃(截断为零(。

因此您可以使用以下内容:

package main
import (
"fmt"
)
func main() {
//float to int
f := 1.9
fmt.Println(int64(f))
}

其按预期输出CCD_ 1。


如果您希望对舍入和截断进行更精细的控制,请使用数学包中的一个函数。

Jut使用数学包:

int64(math.Floor(1.9))

操场

最新更新