-1
考慮寫在去下面的代碼:Float64類型中去不斷,損失精度
package main
import "fmt"
func main() {
const pi float64 = 22/7
fmt.Println("pi value", pi)
}
這裏的pi
值3
。問題是爲什麼即使它是float64
類型,該值也會失去精度?
考慮寫在去下面的代碼:Float64類型中去不斷,損失精度
package main
import "fmt"
func main() {
const pi float64 = 22/7
fmt.Println("pi value", pi)
}
這裏的pi
值3
。問題是爲什麼即使它是float64
類型,該值也會失去精度?
NeverMind,我得到了答案。
package main
import "fmt"
func main() {
const pi float64 = 22.0/7.0
fmt.Println("pi value", pi)
}
輸出3.142857142857143
。看起來類型取決於類型整數是否被分割,它將返回一個整數,而不管接收方var是否爲float64類型。所以得到一個浮點值,在浮點值之間發生浮動。
不完全是你在做什麼,但相關的,對於一些流行的常量,你也可以使用'數學'包常數值。所以對於pi說,你可以使用'math.Pi',而不必計算它的值。 http://golang.org/pkg/math/ – Varun
感謝您的見解,非常感謝! – CuriousMind
@CuriousMind此轉換的原因是,對於常量值應用自動類型轉換(這隻適用於常量值)。完成「22/7」的整數除法並將結果轉換爲「float64」。 – nemo