Ce face strconv.FormatFloat
strconv.FormatFloat(f, fmt, prec, bitSize) scrie un float64 ca text. fmt este formatul: 'f' (zecimal obișnuit, 123.46), 'e' (științific, 1.23e+02), 'g' (alege singur forma mai scurtă).
prec este numărul de zecimale (la 'f' și 'e') sau de cifre semnificative (la 'g'). Valoarea specială -1 înseamnă „cele mai puține cifre care păstrează exact numărul”. bitSize este 64 pentru float64 și 32 pentru float32.
Rezultatul folosește punctul ca separator zecimal. Pentru formatul românesc (12,50) înlocuiește punctul după formatare.
Parametri
| Parametru | Descriere |
|---|---|
f |
Numărul. |
fmt |
Formatul: 'f', 'e', 'E', 'g', 'G', 'b', 'x'. |
prec |
Zecimalele sau cifrele; -1 pentru minimul exact. |
bitSize |
64 sau 32. |
Ce returnează
Textul numărului.
Exemple
Exemplul 1: Formate și precizii
package main
import (
"fmt"
"strconv"
)
func main() {
x := 1234.5678
fmt.Println(strconv.FormatFloat(x, 'f', 2, 64))
fmt.Println(strconv.FormatFloat(x, 'f', 0, 64))
fmt.Println(strconv.FormatFloat(x, 'e', 3, 64))
fmt.Println(strconv.FormatFloat(x, 'g', -1, 64))
fmt.Println(strconv.FormatFloat(0.1+0.2, 'f', -1, 64))
fmt.Println(strconv.FormatFloat(0.1, 'f', 20, 64))
}
Rezultat
1234.57
1235
1.235e+03
1234.5678
0.3
0.10000000000000000555
Exemplul 2: Preț în format românesc
package main
import (
"fmt"
"strconv"
"strings"
)
func lei(suma float64) string {
return strings.Replace(strconv.FormatFloat(suma, 'f', 2, 64), ".", ",", 1) + " lei"
}
func main() {
fmt.Println(lei(12.5))
fmt.Println(lei(3 * 4.99))
}
Rezultat
12,50 lei
14,97 lei
Greșeli frecvente
- Te aștepți ca
0.1 + 0.2să fie afișat 0.3 cu precizia-1. Precizia -1 arată valoarea exactă păstrată în memorie:0.30000000000000004. Pentru afișare alege un număr fix de zecimale. - Dai formatul ca text (
"f"). Este unbyte, deci se scrie cu apostrofuri:'f'.
Comenzi înrudite
strconv.ParseFloat: Citește un număr cu zecimale dintr-un text (cu punct, nu cu virgulă) ca float64.fmt.Printf: Afișează text formatat cu %d, %s, %.2f etc.; Sprintf returnează textul, Fprintf îl scrie într-un fișier sau alt Writer.strconv.AppendInt: Adaugă un număr sau un bool, scris ca text, la sfârșitul unui []byte, fără să creeze un text intermediar.