代码之家  ›  专栏  ›  技术社区  ›  mafu

数学。圆周率常数是错误的

  •  0
  • mafu  · 技术社区  · 15 年前

    我很清楚,一个双精度只有这么多位,但如果可能的话,我们仍然应该努力实现高精度。因此,我当然不希望在官方的.NET4系统库中看到这一点。

    // Summary:
    //     Represents the ratio of the circumference of a circle to its diameter,
    //     specified by the constant, π.
    public const double PI = 3.14159;
    

    为什么只有6位数?那会很容易而且 自由的

    编辑: 这是关于visualstudio中常量的反射。看到了吗 followup question

    4 回复  |  直到 8 年前
        1
  •  15
  •   Hans Passant    15 年前

    复制并粘贴自数学.cs在.NET 4.0参考源中:

      public const double PI = 3.14159265358979323846;
      public const double E  = 2.7182818284590452354;
    

    不知道你在看什么。

    这是从一个后续问题中逆向设计的,您在使用“转到定义”上下文菜单项时查看了从程序集元数据创建的自动生成的文本。是的,生成此文本的代码似乎对公共双常量值使用默认的%f格式。顺便说一句,很少见

        2
  •  4
  •   Dan Diplo    15 年前

    快速测试表明 Console.WriteLine(Math.PI) 输出 3.14159265358979 那么这怎么可能是真的呢?你是说 ToString() 用魔法增加额外的数字?

        3
  •  1
  •   Alexandre C.    15 年前

    Pi = Math.acos(-1) .