为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕后森 2022-07-04 16:41:08
package mainimport (    "fmt")func main(){    //float to int    fmt.Println(int64(1.9))}我收到语法错误“无法将'float64'类型的表达式转换为'int64'类型”,如何纠正它?
查看完整描述

2 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

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


如果 x 可以由 T 的值表示,则常数值 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))

}

哪个输出1符合预期。


或者,如果您想更好地控制舍入与截断,请使用数学包中的函数之一。


查看完整回答
反对 回复 2022-07-04
?
aluckdog

TA贡献1847条经验 获得超7个赞

只需使用数学包:

int64(math.Floor(1.9))


查看完整回答
反对 回复 2022-07-04
  • 2 回答
  • 0 关注
  • 212 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信