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
求圆球体积公式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