-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