[英]Why fmt.Println(float64(1/2)) shows 0?
package main
import (
"fmt"
)
func main() {
fmt.Println(float64(1/2))
}
Why it prints: 0为什么打印:0
Playground link: https://play.golang.org/p/KGgao6n8lTA游乐场链接: https : //play.golang.org/p/KGgao6n8lTA
Is it because fmt.Println
precision is low?是不是因为
fmt.Println
精度低?
The order of operations here is: 1/2 = 0
(integer division truncates decimal places) followed by float64(0) = 0
, then fmt.Println(0)
.这里的操作顺序是:
1/2 = 0
(整数除法截断小数位),然后是float64(0) = 0
,然后是fmt.Println(0)
。
So in short: the integer division is truncated to 0. Everything else works fine.简而言之:整数除法被截断为 0。其他一切正常。
As @Amadan commented, you can force a floating point division by casting one of the integers, ie float64(1) / 2 = 0.5
.正如@Amadan 评论的那样,您可以通过强制转换整数之一来强制进行浮点除法,即
float64(1) / 2 = 0.5
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.