Home >Backend Development >Golang >How to Format Floating-Point Numbers in Go HTML Templates?

How to Format Floating-Point Numbers in Go HTML Templates?

DDD
DDDOriginal
2024-11-09 00:11:01936browse

How to Format Floating-Point Numbers in Go HTML Templates?

Formatting Floats in Go HTML Templates

In Go HTML templates, you may need to format floating-point values for display. As you mentioned, converting a float64 to a string with strconv.FormatFloat in your .go file is straightforward. However, this approach is not suitable for templates.

Instead, you have several options to format floats within your HTML templates:

  • Option 1: Before populating the template, format the number using fmt.Sprintf in your .go file.
  • Option 2: Create a custom data type and implement the String() method to format the float according to your requirements.
  • Option 3: Directly call fmt.Sprintf within the template, specifying the custom format string.
  • Option 4: Register a custom function within the template to format the float using your preferred format string.

Here's an example code snippet that demonstrates these options:

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

// MyFloat is a custom type for formatting floats.
type MyFloat float64

// String implements the String() method for converting MyFloat to a string.
func (mf MyFloat) String() string {
    return fmt.Sprintf("%.2f", float64(mf))
}

func main() {
    t, err := template.New("").Funcs(template.FuncMap{
        // Register the MyFormat function to format floats using a custom format string.
        "MyFormat": func(f float64) string { return fmt.Sprintf("%.2f", f) },
    }).Parse(templ)
    if err != nil {
        panic(err)
    }

    m := map[string]interface{}{
        "n0": 3.1415,
        "n1": fmt.Sprintf("%.2f", 3.1415),
        "n2": MyFloat(3.1415),
        "n3": 3.1415,
        "n4": 3.1415,
    }

    if err := t.Execute(os.Stdout, m); err != nil {
        panic(err)
    }
}

const templ = `
Number:         n0 = {{.n0}}
Formatted:      n1 = {{.n1}}
Custom type:    n2 = {{.n2}}
Calling printf: n3 = {{printf "%.2f" .n3}}
MyFormat:       n4 = {{MyFormat .n4}}`

When you run this code (e.g., on the Go Playground), you will see the following output:

Number:         n0 = 3.1415
Formatted:      n1 = 3.14
Custom type:    n2 = 3.14
Calling printf: n3 = 3.14
MyFormat:       n4 = 3.14

The above is the detailed content of How to Format Floating-Point Numbers in Go HTML Templates?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn