formatFloat:将浮点数转换为字符串

huangapple go评论88阅读模式
英文:

formatFloat : convert float number to string

问题

http://golang.org/pkg/strconv/

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

如何将浮点数转换为字符串格式
这是谷歌游乐场但没有得到预期的输出2e+07)。
我想要得到"21312421.213123"

package main

import "fmt"
import "strconv"

func floattostr(input_num float64) string {
    // 将浮点数转换为字符串
    return strconv.FormatFloat(input_num, 'g', 1, 64)
}

func main() {
    fmt.Println(floattostr(21312421.213123))
    // 我期望得到的是字符串格式的"21312421.213123"
}

请帮我将浮点数转换为字符串谢谢
英文:

http://golang.org/pkg/strconv/

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

How do I convert a float number into string format?
This is google playground but not getting the expected output. (2e+07)
I want to get "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
 }

Please help me get the string out of float number. Thanks

答案1

得分: 161

请稍等,我会为您翻译这段代码。

package main

import "fmt"
import "strconv"

func FloatToString(input_num float64) string {
    // 将浮点数转换为字符串
    return strconv.FormatFloat(input_num, 'f', 6, 64)
}

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

如果您只想要尽可能多的小数位数精度,可以使用特殊的精度-1,它使用最少的数字位数,以便ParseFloat精确返回f。例如:

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

个人而言,我觉得使用fmt包更容易。(Playground链接)

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

或者,如果您只想要将字符串转换为浮点数:

fmt.Sprintf("%.6f", 21312421.213123)
英文:

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

If you just want as many digits precision as possible, then the special precision -1 uses the smallest number of digits necessary such that ParseFloat will return f exactly. Eg

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

Personally I find fmt easier to use. (Playground link)

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

Or if you just want to convert the string

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

huangapple
  • 本文由 发表于 2013年10月1日 02:40:51
  • 转载请务必保留本文链接:https://go.coder-hub.com/19101419.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定