2013-09-30 17 views
24

http://golang.org/pkg/strconv/Go, Golang, FormatFloat: convertire il numero float a stringa

http://play.golang.org/p/4VNRgW8WoB

Come faccio a convertire un numero float in formato stringa? Questo è il parco giochi di Google ma non ottiene l'output previsto. (2e + 07) voglio arrivare "21312421,213,123 mila"

package main 

import "fmt" 
import "strconv" 

func floattostr(input_num float64) string { 

     // to convert a float number to a string 
    return strconv.FormatFloat(input_num, 'g', 1, 64) 
} 

func main() { 
     fmt.Println(floattostr(21312421.213123)) 
     // what I expect is "21312421.213123" in string format 
} 

Si prega di aiutarmi a ottenere la stringa di numero di float. Grazie

risposta

75

Try this

package main 

import "fmt" 
import "strconv" 

func FloatToString(input_num float64) string { 
    // to convert a float number to a string 
    return strconv.FormatFloat(input_num, 'f', 6, 64) 
} 

func main() { 
    fmt.Println(FloatToString(21312421.213123)) 
} 

Se si desidera solo come numero di cifre di precisione possibile, quindi la precisione speciale -1 utilizza il minor numero di cifre necessarie in modo tale che parseFloat tornerà f esattamente. Ad esempio

strconv.FormatFloat(input_num, 'f', -1, 64) 

Personalmente trovo fmt più facile da usare. (Playground link)

fmt.Printf("x = %.6f\n", 21312421.213123) 

Oppure, se si desidera solo per convertire la stringa

fmt.Sprintf("%.6f", 21312421.213123) 
+0

+1 per 'strconv.FormatFloat' - non ero a conoscenza di questo, ma forse vale la pena notare che' fmt', sebbene sia più piacevole da usare, sarà un po 'più lento della chiamata alla funzione diretta, perché deve fare molte analisi solo per capire cosa si vuole, e solo allora chiamare 'strconv.FormatFloat'. –

+0

Grazie, ma se non so quanto preciso dovrebbe essere. Cosa succede se non lo so è .000001 o .001 –

+2

Ho aggiornato la risposta con una sezione sulla precisione -1 in 'FloatFormat', che è quello che vuoi. –

Problemi correlati