Go中运算符优先级公式V = 4/3πr3

Operator precedence in Go in formula V = 4/3πr3

求圆球体积公式V = 4/3πr3

我编码了 V = 4 / 3 * math.Pi * math.Pow(r, 3) 但没有编码 V = (4 * math.Pi * math.Pow(rˆ3)) / 3

我知道有运算符优先级需要考虑,但在这种情况下,我看不出它可能会干扰期望的结果,毕竟除了 * 之外没有其他运算符,/math.Pow.

相信你想要的是这样的:

V = 4.0 / 3.0 * math.Pi * math.Pow(r, 3)

正如 JimB 所述,默认情况下 4 / 3 将是整数除法,因此会显着舍入。您可以通过使用 4.0 / 3.0.

指定数据类型来强制进行浮点除法

这是一个求球体体积的示例代码:

package main

import (
    "fmt"
    "math"
)

func volume(radius float64) float64 {
    return 4.0 / 3.0 * math.Pi * math.Pow(radius, 3)
}

func main() {
    fmt.Println(volume(5.0))
}

输出:

523.598775598299