html/template 未显示带有精确小数位的 e+07 表示法的浮点值

html/template is not showing a float value with e+07 notation in exact decimal places

我正在尝试将值 1.8e+07 传递给结构 StudentTestVal 字段的示例。现在我希望这个 1.8e+07 值精确到小数位,但它没有这样做。如果值为 1.8e+05,它能够以精确的小数位 (180000) 显示该值。但如果大于e+05则无法显示。

例子

package main

import (
    "fmt"
    "os"
    "text/template"
    
)

// declaring a struct
type Student struct {
    Name  string
    TestVal float32
}

// main function
func main() {

    std1 := Student{"AJ", 1.8e+07}

    // "Parse" parses a string into a template
    tmp1 := template.Must(template.New("Template_1").Parse("Hello {{.Name}}, value is {{.TestVal}}"))

    // standard output to print merged data
    err := tmp1.Execute(os.Stdout, std1)

    // if there is no error,
    // prints the output
    if err != nil {
        fmt.Println(err)
    }
}

请帮忙。

这只是浮点数的默认格式。 fmt 的包文档对此进行了解释: %v 动词是默认格式,对于浮点数意味着/恢复为 %g

%e for large exponents, %f otherwise. Precision is discussed below.

如果您不想要默认格式,请使用 printf 模板函数并指定您想要的格式,例如:

{{printf "%f" .TestVal}}

这将输出(在 Go Playground 上尝试):

Hello AJ, value is 18000000.000000

或使用:

{{printf "%.0f" .TestVal}}

哪个会输出(在Go Playground上试试):

Hello AJ, value is 18000000

查看相关内容: