我希望)这不是关于 Go 中浮点数学准确性的问题。下面我有一个带有 2 个表达式的测试函数,我认为它们应该产生相同的结果,但给定输入,产生不同的输出。编辑这最终只是关于浮点精度。package mainimport "fmt"func main() { fmt.Println(test(10.0, 0.1, 1.0)) // 0.2 fmt.Println(test(10.0, 0.2, 1.0)) // 0.3 fmt.Println(test(10.0, 0.3, 1.0)) // 0.4 fmt.Println(test(10.0, 0.4, 1.0)) // 0.5 fmt.Println(test(10.0, 0.5, 1.0)) // 0.6}func test(plays float64, rate float64, value float64) float64 { // return (value/plays) + rate return (plays*rate + value) / plays}第一个表达式(value/plays) + rate打印:0.20.300000000000000040.40.50.6而第二个表达式(plays*rate + value) / plays打印预期的输出:0.20.30.40.50.6为什么是这样?
目前暂无任何回答
- 0 回答
- 0 关注
- 196 浏览
添加回答
举报
0/150
提交
取消