【问题标题】:How to convert float to string如何将浮点数转换为字符串
【发布时间】:2018-11-15 05:12:40
【问题描述】:

我从文件中读取了一个浮点数,并且必须将其转换为字符串。我的问题是我不确定小数点后会有多少位数。我需要准确地将浮点数转换为字符串。

For ex: 
1.10 should be converted to "1.10"
Also,
1.5 should be converted to "1.5"
Can someone suggest how to go about this?

【问题讨论】:

标签: string go floating-point precision


【解决方案1】:

像这样使用strconv.FormatFloat

s := strconv.FormatFloat(3.1415, 'E', -1, 64)
fmt.Println(s)

输出

3.1415

【讨论】:

    【解决方案2】:

    将浮点数转换为字符串

    FormatFloat 根据格式 fmt 和精度 prec 将浮点数 f 转换为字符串。假设原始数据是从 bitSize 位的浮点值(32 表示 float32,64 表示 float64)获得的,它会对结果进行四舍五入。

    func FormatFloat(f float64, fmt byte, prec, bitSize int) 字符串

    f := 3.14159265
    s := strconv.FormatFloat(f, 'E', -1, 64)
    fmt.Println(s) 
    

    输出为“3.14159265”

    另一种方法是使用fmt.Sprintf

    s := fmt.Sprintf("%f", 123.456) 
    fmt.Println(s)
    

    输出是“123.456000”

    检查play ground上的代码

    【讨论】:

    • 最快的方法是什么?我猜 FormatFloat() 工作得更快
    • 确实,FormatFloat 更快,分配更少。
    【解决方案3】:
    func main() {
        var x float32
        var y string
        x= 10.5
        y = fmt.Sprint(x)
        fmt.Println(y)
    }
    

    【讨论】:

    • 在使用 fmt.Sprint 和其他类似函数时要小心,因为它们比使用 strconv 函数更慢并且分配更多。
    【解决方案4】:

    一行,仅此而已:)

    str := fmt.Sprint(8.415)
    

    【讨论】:

    • 请不要发布重复的答案。
    猜你喜欢
    • 2011-11-25
    • 1970-01-01
    • 2018-02-15
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    相关资源
    最近更新 更多