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

package main


import (

    "fmt"

)


func main(){


    //float to int

    fmt.Println(int64(1.9))


}

我收到语法错误“无法将'float64'类型的表达式转换为'int64'类型”,如何纠正它?


慕后森
浏览 216回答 2
2回答

开满天机

类型转换对常量有特殊的规则:如果 x 可以由 T 的值表示,则常数值 x 可以转换为类型 T。甚至给出了下面的例子:int(1.2)                 // illegal: 1.2 cannot be represented as an int如果您真的坚持将浮点数截断为 int,请使用变量作为中介,将其转换为非常量转换。Go 会很高兴地进行转换并删除小数部分,正如规范中进一步提到的那样:将浮点数转换为整数时,会丢弃小数(截断至零)。因此,您可以使用以下内容:package mainimport (    "fmt")func main() {    //float to int    f := 1.9    fmt.Println(int64(f))}哪个输出1符合预期。或者,如果您想更好地控制舍入与截断,请使用数学包中的函数之一。

aluckdog

只需使用数学包:int64(math.Floor(1.9))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go