从结构图中打印出一些值时。我看到某些带有替代符号的 float64 值。测试通过,但您如何阅读此符号 (4e-06)。这个值真的和“0.000004”一样吗?
package main
import (
"fmt"
"strconv"
"testing"
)
func TestXxx(t *testing.T) {
num := fmt.Sprintf("%f", float64(1.225788)-float64(1.225784)) // 0.000004
f, _ := strconv.ParseFloat(num, 64)
if f == 0.000004 {
t.Log("Success")
} else {
t.Error("Not Equal", num)
}
if getFloat(f) == 0.000004 {
t.Log("Success")
}else{
t.Error("Fail", getFloat(f))
}
}
func getFloat(f float64) float64 {
fmt.Println("My Float:",f) // 4e-06
return f
}
最佳答案
符号称为Scientific notation , 它是一种以紧凑、简短的形式打印非常小或非常大的数字的便捷方法。
它的形式是
m × 10n
(m 乘以 10 的 n 次方)
在编程语言中,它被编写/打印为:
m
e
n
参见 Spec: Floating-point literals .
您的号码:4e-06
,其中m=4
和n=-6
,即4*10
-6
等于 0.000004
。
关于go - 如何阅读golang中的浮点符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41212445/