进行不同结果的数学运算

我希望)这不是关于 Go 中浮点数学准确性的问题。下面我有一个带有 2 个表达式的测试函数,我认为它们应该产生相同的结果,但给定输入,产生不同的输出。

编辑这最终只是关于浮点精度。

package main


import "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.2

0.30000000000000004

0.4

0.5

0.6

而第二个表达式(plays*rate + value) / plays打印预期的输出:


0.2

0.3

0.4

0.5

0.6

为什么是这样?


拉莫斯之舞
浏览 197回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go