打印具有固定宽度和有效数字的 Float64 数字
假设您需要在固定宽度为 12 个字符的表格中打印 float64 数字以及最大可能的有效数字位数。请考虑以下示例:
fmt.Printf("%12.6g\n", 9.405090880450127e+119) //"9.40509e+119" fmt.Printf("%12.6g\n", 0.1234567890123) //" 0.123457" fmt.Printf("%12.6g\n", 123456789012.0) //" 1.23457e+11"
如您所见,带有 .6g 格式说明符的默认 fmt.Printf 函数可能会截断有效数字或使用科学记数法,从而导致精度损失。有没有办法使用标准库函数来实现我们想要的格式?
自定义格式来救援
没有一个简单的标准库函数可以完全满足我们的要求。但是,我们可以开发一个自定义格式化函数,将所需的宽度和最大有效数字考虑在内。我们的处理方法如下:
这是一个示例实现Go:
import ( "fmt" ) func format12(x float64) string { if x >= 1e12 { exp := fmt.Sprintf("%.g", x) return fmt.Sprintf("%%12.%dg", 12-len(exp)) } s := fmt.Sprintf("%.0f", x) if len(s) == 12 { return s } return fmt.Sprintf("%%%d.%df", len(s), 12-len(s)-1) }
使用各种 float64 值测试此函数会产生以下输出:
0.0000000000 0.1234567890 1234.5678901 123456789012 1.234568e+12 9405090880.5 9.405091e+19 9.40509e+119
这演示了如何以固定宽度打印 float64 数字,并具有最大可能的有效数量使用自定义格式的数字。
以上是如何在 Go 中打印固定宽度和最大有效位数的 Float64 数字?的详细内容。更多信息请关注PHP中文网其他相关文章!