当前位置: 首页 > 面试题库 >

如何使用Go将浮点数格式化为字符串

史英睿
2023-03-14
问题内容

我正在尝试使用Go来找到“最佳”的方式来将浮点数格式化为字符串。我一直在寻找示例,但是找不到任何可以具体回答我所遇到问题的东西。我要做的就是使用“最佳”方法将浮点数格式化为字符串。小数位数可能会有所不同,但会知道(例如2或4或零)。下面是我要实现的示例

根据以下示例,我应该使用fmt.Sprintf()还是strconv.FormatFloat()或其他方式?

而且,每种的正常用法是什么?

我也不理解在以下当前使用32的情况下使用32或64的重要性:

strconv.FormatFloat(float64(fResult), 'f', 2, 32)

例:

package main

import (
    "fmt"
    "strconv"
)

func main() {

    var (
        fAmt1 float32 = 999.99
        fAmt2 float32 = 222.22
    )

    var fResult float32 = float32(int32(fAmt1*100) + int32(fAmt2*100)) / 100

    var sResult1 string = fmt.Sprintf("%.2f", fResult)

    println("Sprintf value = " + sResult1)

    var sResult2 string = strconv.FormatFloat(float64(fResult), 'f', 2, 32)

    println("FormatFloat value = " + sResult2)

}

问题答案:

两者fmt.Sprintfstrconv.FormatFloat用相同的字符串被窝里格式化程序,所以应该给予同样的结果。

如果将数字格式化的精度是可变的,则使用起来可能会更容易FormatFloat,因为它避免了像那样构造格式字符串的需要Sprintf。如果它永远不会改变,那么您可以使用其中任何一个。

最后一个参数FormatFloat控制值的取整方式。从文档中:

假设原始结果是从bitSize位的浮点值(float32为32,float64为64)获得的,则四舍五入结果

因此,如果您float32像示例代码中那样使用值,那么传递32是正确的。



 类似资料:
  • 问题内容: 我有一个类型的变量,我需要以不超过3个小数的精度打印它,但是它不应该有任何结尾的零… 例如。我需要 我尝试使用,我做错了吗? 谢谢。:) 问题答案: 尝试使用模式代替: 输出:

  • 问题内容: 我的python脚本中有一个数字,希望用作matplotlib中图形标题的一部分。是否有将浮点数转换为格式化的TeX字符串的函数? 基本上, 退货 但是我想要 或至少让matplotlib格式化浮点格式,就像格式化第二个字符串一样。我也一直使用python 2.4,因此特别喜欢在旧版本中运行的代码。 问题答案: 您可以执行以下操作: 在旧样式中:

  • 问题内容: 我想用JavaScript格式化价格。我想要一个以a 作为参数并返回如下格式的函数: 最好的方法是什么? 问题答案: 好的,根据您的发言,我正在使用此功能: 我乐于接受改进建议(我不愿意仅仅为了做到这一点就不包括YUI :))我已经知道我应该检测到“”。而不只是将其用作小数点分隔符…

  • 问题内容: 我有一个名为date的LocalDate变量,当我打印它时显示1988-05-05,我需要将此变量转换为要打印为1988年5月5日。如何执行此操作? 问题答案: 如果他从Java 8中的新功能LocalDate开始,SimpleDateFormat将无法工作。从我所看到的,您将不得不使用DateTimeFormatter,http://docs.oracle.com/javase/8/

  • 我有一个LocalDate变量名为date,当我打印它时,它显示1988-05-05,我需要将它转换成05.may1988。怎么做?

  • 问题内容: 刚开始使用Bash脚本编写时,偶然发现jq可与JSON一起使用。 我需要将如下所示的JSON字符串转换为表格以在终端中输出。 我要在终端中显示的内容: 请注意,我不想显示每一行的email属性,因此jq命令应该涉及一些过滤。下面为我​​提供了一个简单的名称和ID列表: 问题是,我无法将其显示为表格。我知道jq有一些格式化选项,但不如我使用时的选项好。我想我想在一个数组中获取这些值,然后