以最小宽度浮动到Golang中的字符串

时间:2016-10-27 12:54:58

标签: go

我试图使用最小宽度为3的fmt.Printf来打印浮动

ParentFormType

应该打印->add('property2', SubFormType::class, array( 'error_bubbling' => true )) ,而是打印fmt.Printf("%3f", float64(0)) 如果我将精度设置为3,则会截断该值。

基本上,我想要的是如果值为0,它应该打印0.00。如果值为0.000000,则应打印0.00

3 个答案:

答案 0 :(得分:2)

这个功能可以做你想要的:

func Float2String(i float64) string {
    // First see if we have 2 or fewer significant decimal places,
    // and if so, return the number with up to 2 trailing 0s.
    if i*100 == math.Floor(i*100) {
        return strconv.FormatFloat(i, 'f', 2, 64)
    }
    // Otherwise, just format normally, using the minimum number of
    // necessary digits.
    return strconv.FormatFloat(i, 'f', -1, 64)
}

答案 1 :(得分:1)

你错过了一个点

fmt.Printf("%.3f", float64(0))

将打印出来:0.000

示例:https://play.golang.org/p/n6Goz3ULcm

答案 2 :(得分:1)

使用strconv.FormatFloat,例如:

https://play.golang.org/p/wNe3b6d7p0

package main

import (
    "fmt"
    "strconv"
)

func main() {
    fmt.Println(strconv.FormatFloat(0, 'f', 2, 64))
    fmt.Println(strconv.FormatFloat(0.0000003, 'f', -1, 64))
}
  

0.00
  0.0000003

有关其他格式选项和模式,请参阅链接文档。