为什么fmt.Println(float64(1/2))显示为0?

时间:2019-02-07 05:41:49

标签: go

package main

import (
    "fmt"
)

func main() {
    fmt.Println(float64(1/2))
}

为什么打印:0

游乐场链接:https://play.golang.org/p/KGgao6n8lTA

是因为fmt.Println的精度低吗?

1 个答案:

答案 0 :(得分:10)

此处的操作顺序为:1/2 = 0(整数除法截断小数位),后跟float64(0) = 0,然后是fmt.Println(0)

因此,简而言之:整数除法会被截断为0。其他所有方法都可以正常工作。

正如@Amadan所说,可以通过强制转换整数之一float64(1) / 2 = 0.5来强制进行浮点除法。