2013-09-30 22 views
24

http://golang.org/pkg/strconv/Go, Golang, formatFloat: chuyển đổi số float để chuỗi

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

Làm thế nào để chuyển đổi một số float sang định dạng chuỗi? Đây là sân chơi google nhưng không nhận được kết quả mong đợi. (2e + 07) Tôi muốn để có được "21312421,213123"

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 
} 

Xin hãy giúp tôi có được chuỗi ra khỏi số float. Cảm ơn

Trả lời

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)) 
} 

Nếu bạn chỉ muốn càng nhiều chữ số chính xác càng tốt, sau đó độ chính xác đặc biệt -1 sử dụng số nhỏ nhất của chữ số cần thiết như vậy parseFloat sẽ trở lại f chính xác. Ví dụ:

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

Cá nhân tôi tìm thấy fmt dễ sử dụng hơn. (Playground link)

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

Hoặc nếu bạn chỉ muốn chuyển đổi chuỗi

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

+1 cho 'strconv.FormatFloat' - Tôi đã không nhận thức được rằng, nhưng nó có thể là đáng chú ý rằng' fmt', trong khi đẹp hơn để sử dụng, sẽ chậm hơn một chút so với cuộc gọi hàm trực tiếp, bởi vì nó phải làm rất nhiều phân tích cú pháp chỉ để tìm ra những gì bạn muốn, và chỉ sau đó gọi 'strconv.FormatFloat'. –

+0

Cảm ơn nhưng nếu tôi không biết chính xác nó sẽ như thế nào. Nếu tôi không biết nó là 0,000001 hoặc .001 –

+2

Tôi đã cập nhật câu trả lời bằng một phần về độ chính xác -1 trong 'FloatFormat', đó là những gì bạn muốn. –

Các vấn đề liên quan