Golang浮点数转换方法

在Golang中如何将浮点数转换为字符串?转换时如何控制小数点后的位数?有没有性能最优的转换方法?不同方法之间有什么区别?

2 回复

Golang中浮点数转换常用方法:

  1. 使用float32()float64()进行类型转换
  2. 使用strconv.ParseFloat()将字符串转为浮点数
  3. 使用fmt.Sprintf()将浮点数转为字符串
  4. 注意精度损失问题,建议使用math/big处理高精度需求

更多关于Golang浮点数转换方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Golang中,浮点数转换主要涉及以下几种情况:

1. 字符串与浮点数互转

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // 字符串转浮点数
    str := "3.14159"
    f, err := strconv.ParseFloat(str, 64)
    if err != nil {
        panic(err)
    }
    fmt.Printf("字符串转浮点数: %f\n", f)
    
    // 浮点数转字符串
    f2 := 2.71828
    str2 := strconv.FormatFloat(f2, 'f', -1, 64)
    fmt.Printf("浮点数转字符串: %s\n", str2)
}

2. 整数与浮点数互转

package main

import "fmt"

func main() {
    // 整数转浮点数
    i := 42
    f := float64(i)
    fmt.Printf("整数转浮点数: %f\n", f)
    
    // 浮点数转整数(会截断小数部分)
    f2 := 3.99
    i2 := int(f2)
    fmt.Printf("浮点数转整数: %d\n", i2)
}

3. 不同精度浮点数转换

package main

import "fmt"

func main() {
    var f32 float32 = 3.14159
    var f64 float64 = 2.71828
    
    // float32 转 float64
    f64From32 := float64(f32)
    
    // float64 转 float32(可能损失精度)
    f32From64 := float32(f64)
    
    fmt.Printf("float32转float64: %f\n", f64From32)
    fmt.Printf("float64转float32: %f\n", f32From64)
}

4. 格式化输出控制精度

package main

import "fmt"

func main() {
    f := 3.1415926535
    
    // 保留2位小数
    fmt.Printf("保留2位小数: %.2f\n", f)
    
    // 科学计数法
    fmt.Printf("科学计数法: %e\n", f)
}

注意事项:

  • 使用 strconv.ParseFloat() 时,第二个参数指定位数(32或64)
  • 浮点数转整数会直接截断小数部分,不会四舍五入
  • 高精度转低精度可能损失精度
  • 处理用户输入时务必检查错误

这些方法覆盖了Golang中常见的浮点数转换需求。

回到顶部