Tôi chỉ cần chạy mã này vào máy của tôi:Go gói toán có kết quả không hợp lệ
package main
import (
"fmt"
"math"
)
func main() {
const ali = 4e20
fmt.Println(math.Sin(ali))
}
và nhận được kết quả này:
1.3471173831553043e+258
Tại sao kết quả Sin đi hơn 1?
Python và một số ngôn ngữ khác có kết quả chính xác
Rất thú vị. Bạn có chắc 'python' cung cấp cho bạn câu trả lời đúng không? Tôi đã thử: 'math.sin (4e20)' và 'math.sin (4e20 + 1)' và tôi nhận được kết quả tương tự: '-0.3298871424318473'. Cảm giác của tôi ở đây là với những phao lớn, độ chính xác rất thấp, và không thể tính chính xác 'sin'. Tôi gần như nghĩ rằng 'go' cố tình cho bạn giá trị lớn về mục đích, vì vậy bạn sẽ biết rằng có điều gì đó sai, nhưng theo mã nguồn: https://golang.org/src/math/sin.go?s= 5085: 5112 # L164, nó có thể đã xảy ra tai nạn. – Akavall
Dường như đây là [lỗi đã biết] (https://github.com/golang/go/issues/6794). Bạn không chắc chắn công việc tốt nhất là gì. – Flimzy
Vâng @Akavall, nó đã đúng trong trăn 2 và 3 –