【问题标题】:Parsefloat give output in scientific format in golangParsefloat 在 golang 中以科学格式提供输出
【发布时间】:2020-11-06 04:53:44
【问题描述】:

我正在尝试使用 golang 中的 Parsefloat 函数解析此字符串“7046260”,但我得到的是科学格式 7.04626e+06 的输出。我想要7046260 格式的输出。这个怎么弄?

package main

import (
    "fmt"
    "strconv"
)

func main() {

    Value := "7046260"
    Fval, err := strconv.ParseFloat(Value, 64)

    if err == nil {
        fmt.Println(Fval)
    }

}

输出:- 7.04626e+06

【问题讨论】:

  • 您将格式化输出与内部表示混淆了。 ParseFloat 工作正常。你只需要指定一个输出格式。
  • 另外,由于您使用的是 IEE-754,您还需要检查NaN(使用math.IsNaN

标签: go parsefloat


【解决方案1】:

Parsefloat 在 golang 中以科学格式提供输出

我正在尝试使用 golang 中的 Parsefloat 函数解析此字符串“7046260”,但我得到的是科学格式 7.04626e+06 的输出。我想要格式为 7046260 的输出

  • 您将浮点值的(默认)格式化输出与其内部表示混淆了。
  • ParseFloat 工作正常
  • 您只需要指定一个输出格式:
    • See the fmt package documentation
    • 使用Printf 指定格式字符串。
    • 使用格式%.0f 来指示Go 打印值如下:
      • % 标志着占位符的开始。
      • . 表示默认宽度(即不要添加前导零或尾随零)。
      • 0 表示零基数精度(即不打印任何小数位,即使值有小数位)
      • f 表示占位符的结尾,并且占位符用于 浮点 值。

我还有一些其他建议:

  • Go 中的局部变量应该使用camelCase,而不是PascalCaseGo does not encourage the use of snake_case
  • 您应该在每个nil-returning 函数返回后检查err != nil,或者快速失败(如果适用)、向上传递错误(并选择记录错误),或者优雅地处理它。
  • 使用浮点数时,您应该注意NaN 的特殊状态。 IsNaN 函数是唯一正确检查NaN 值的方法(因为( aNaNValue1 == math.NaN ) == false)。
    • 这同样适用于所有实现 IEEE-754 的语言,包括 Java、JavaScript、C、C#.NET 和 Go。

像这样:

package main

import (
    "fmt"
    "strconv"
    "math"
    "log"
)

func main() {

    numberText := "7046260"
    numberFloat, err := strconv.ParseFloat(numberText, 64)
    if err != nil {
        log.Fatal(err)
    }

    if math.IsNaN(numberFloat) {
        log.Fatal("NaN value encountered")
    }

    fmt.Printf("%.0f",numberFloat)
    fmt.Println()

}

【讨论】:

  • 如果 numberText = "7046260.12345678" 我想要最后 numberFloat = 7046260.12345678
  • 我不知道数字会在浮点部分,我想最终解析为浮点数
  • @AbhirajRoy 请阅读fmt的文档:golang.org/pkg/fmt
猜你喜欢
  • 1970-01-01
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多