Golang浮点数转换方法
在Golang中如何将浮点数转换为字符串?转换时如何控制小数点后的位数?有没有性能最优的转换方法?不同方法之间有什么区别?
2 回复
Golang中浮点数转换常用方法:
- 使用
float32()和float64()进行类型转换 - 使用
strconv.ParseFloat()将字符串转为浮点数 - 使用
fmt.Sprintf()将浮点数转为字符串 - 注意精度损失问题,建议使用
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中常见的浮点数转换需求。

