gpt4 book ai didi

go - 学习围棋——范围

转载 作者:IT王子 更新时间:2023-10-29 00:50:36 26 4
gpt4 key购买 nike

大家好,我是 Go 编程语言的新手。

我正在学习http://www.golang-book.com/

在第 4 章的练习中,有一道将华氏度转换为摄氏度的问题。

我把答案编码如下

    package main

import "fmt"

func main(){

fmt.Println("Enter temperature in Farentheit ");

var input float64

fmt.Scanf("%f",&input)

var outpu1 float64 = ( ( (input-32)* (5) ) /9)
var outpu2 float64= (input-32) * (5/9)
var outpu3 float64= (input -32) * 5/9
var outpu4 float64= ( (input-32) * (5/9) )

fmt.Println("the temperature in Centigrade is ",outpu1)
fmt.Println("the temperature in Centigrade is ",outpu2)
fmt.Println("the temperature in Centigrade is ",outpu3)
fmt.Println("the temperature in Centigrade is ",outpu4)
}

输出结果如下

sreeprasad:projectsInGo sreeprasad$ go run convertFarentheitToCentigrade.go 
Enter temperature in Farentheit
12.234234
the temperature in Centigrade is -10.980981111111111
the temperature in Centigrade is -0
the temperature in Centigrade is -10.980981111111111
the temperature in Centigrade is -0

我的问题是关于 outpu2 和 outpu4。括号是正确的,但它如何或为什么打印 -0。

谁能解释一下

最佳答案

很简单,表达式 (5/9) 被评估为 (int(5)/int(9)) 等于 0。尝试 (5./9)

为了阐明发生这种情况的原因,它处理了确定表达式变量类型的顺序。

我猜 b/c (5/9) 存在而不考虑 input 在上面的情况 2 和 4 中,编译器将它们解释为 int 并简单地将表达式替换为 0,此时零被视为依赖于输入,因此在最终编译之前采用 float64 类型。

一般来说,Go 不会为您转换数字类型,所以这是对我来说唯一有意义的解释。

关于go - 学习围棋——范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13505202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com