-6

输出应该是一个有效数字而不是 0,但我得到 0 作为输出,我查看了每个地方,文档,stackoverflow,gfg,但我没有找到任何东西,请帮助我。这是我的代码,请帮忙(输出必须是'体重/(高度*高度)* 10000))

package main
import "fmt"

func calculate(height int, weight int) int{
    var x = height * height
    var y = weight
    var z = y / x
    var n = z * 10000
    return n
}

func main() {
    fmt.Println(calculate(160, 40))
}
4

2 回答 2

2

如果您要求您的函数必须返回一个int,那么我认为您最简单的解决方案是

func calculate(height, weight int) int {
   return weight * 10000 / (height * height)
}

利用乘法的交换性,即:

weight / (height * height) * 10000

等于(在理想的数学术语中)

weight * 10000 / (height * height)

当您使用整数时,第二个选项的优势就来了。当你在 Go 中除以整数时,你会丢失信息,因为你没有保留余数。由于我们假设您必须返回一个整数,因此您必须在某些时候由于除法而丢失信息。通过将除法操作移到操作顺序的最后一步,我们将这个错误的影响降到最低。

于 2021-04-13T21:06:21.670 回答
-1

你可以做一堆演员:

package main

func calculate(height, weight int) int {
   z := float32(weight) / float32(height * height)
   return int(z * 10000)
}

func main() {
   println(calculate(160, 40) == 15)
}

或者您可以将函数定义为采用浮点参数:

package main

func calculate(height, weight float32) float32 {
   x := height * height
   z := weight / x
   return z * 10000
}

func main() {
   println(calculate(160, 40) == 15.625)
}

https://golang.org/ref/spec#Arithmetic_operators

于 2021-04-13T17:56:56.950 回答