【问题标题】:formatFloat : convert float number to string [duplicate]formatFloat :将浮点数转换为字符串 [重复]
【发布时间】:2013-10-06 17:47:25
【问题描述】:

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 {

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

请帮我从浮点数中取出字符串。谢谢

【问题讨论】:

标签: go


【解决方案1】:

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

如果您只想要尽可能多的数字精度,则特殊精度 -1 使用所需的最少数字,这样 ParseFloat 将准确返回 f。例如

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

我个人觉得fmt 更容易使用。 (Playground link)

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

或者如果你只是想转换字符串

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

【讨论】:

  • +1 for strconv.FormatFloat - 我没有意识到这一点,但可能值得注意的是,fmt 虽然更好用,但会比直接函数调用慢一点, 因为它必须做很多解析才能弄清楚你想要什么,然后才调用strconv.FormatFloat
  • 我在FloatFormat 中用精度-1 部分更新了答案,这就是你想要的。
  • FormatFloat 中的“f”是什么?我不明白。
  • @Bruce 'f' 控制格式 - 请参阅 the docs 了解更多信息。
  • @gpanda 不幸的是你的精度不够了。您的数字有 74 位,而 float64 只能存储 56 位 :-( 如果您想要更精确,请查看 big.Int/big.Float
猜你喜欢
  • 1970-01-01
  • 2011-11-25
  • 1970-01-01
  • 2017-05-09
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
  • 2012-11-15
相关资源
最近更新 更多