go - 如何阅读golang中的浮点符号?

标签 go

从结构图中打印出一些值时。我看到某些带有替代符号的 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 次方)

在编程语言中,它被编写/打印为:

men

参见 Spec: Floating-point literals .

您的号码:4e-06,其中m=4n=-6,即4*10-6 等于 0.000004

关于go - 如何阅读golang中的浮点符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41212445/

相关文章:

http - Golang 1.7 上下文值 nil

html - 使用fmt.Fprintf()发送文本/纯文本

syntax - 这个带有下划线、内联接口(interface)和赋值的变量声明是什么?

mongodb - 如何在Go中比较两个Mongodb原始类型Decimal128

go - 如何在 Godoc 中包含可播放的示例

go - 在Go中优化对CSV的写入

go - Go HTML 模板中的字段检测

if-statement - 如何在 golang 中编写 DRY 和有效的 if 语句?

go - 处理函数中的 N 维 slice

JSON Unmarshal 预期响应和错误消息