美文网首页
9999999999999999.0 - 99999999999

9999999999999999.0 - 99999999999

作者: 道行者 | 来源:发表于2024-01-14 10:25 被阅读0次

    看了网上的这篇文章 9999999999999999.0 - 9999999999999998.0,大多数编程语言算出来的都是 2,包括 GoLang。我用 go 亲自写代码试了一下,结果如下:

      var a = 9999999999999999.0
      var b = 9999999999999998.0
      const e = 9999999999999999.0
      const f = 9999999999999998.0
    
      fmt.Printf("%v\n", 9999999999999999.0-9999999999999998.0)                   // 输出 1
      fmt.Printf("%v\n", 9999999999999999.1-9999999999999998.1)                   // 输出 1 ?
      fmt.Printf("%v\n", e-f)                                                     // 输出 1
      fmt.Printf("%v\n", float32(9999999999999999.0)-float32(9999999999999998.0)) // 输出 0
      fmt.Printf("%v\n", float64(9999999999999999.1)-float64(9999999999999998.1)) // 输出 2
      fmt.Printf("%v\n", float64(9999999999999999.0)-float64(9999999999999998.0)) // 输出 2
      fmt.Printf("%v\n", a-b)                                                     // 输出 2
    

    go 的版本是 version go1.21.4 windows/amd64。
    不明白的是,第二条输出语句,它是按什么数据类型计算的呢?肯定不能是整数。是 float32 还是 float64?
    只能说用常量进行计算的精度比用变量高。

    相关文章

      网友评论

          本文标题:9999999999999999.0 - 99999999999

          本文链接:https://www.haomeiwen.com/subject/linqodtx.html