截断的双常量是否在VS中显示?

maf*_*afu 7 metadata visual-studio

Math.Pi根据反射器和MSDN,常数等于3.14159265358979323846.在Visual Studio 2010中查看Math类时,该值显示为3.14159.截断宝贵的常数我可以归咎于谁?

mpe*_*son 7

我不知道为什么OP没有发布这个,因为它会让事情变得如此令人难以置信,但你可以重现如下:

  • 打开IDE
  • 将Math.PI输入到.cs文件中.
  • 右键单击Math.PI并单击"转到定义"

这将打开Math的Metadata文件,其中包含以下内容:

    //
    // Summary:
    //     Represents the ratio of the circumference of a circle to its diameter, specified
    //     by the constant, ?.
    public const double PI = 3.14159;
Run Code Online (Sandbox Code Playgroud)

  • 是的,必须是它.此文本是从元数据自动生成的.显然,不会将double类型的公共常量转换为包含所有15位有效数字的字符串.它是C/C++中printf()函数的默认格式化行为,具有%f格式类型说明符.这个代码很可能是用C++编写的,因为元数据枚举接口是基于COM的. (5认同)

Bri*_*sen 2

很抱歉重复一遍,但是您如何获得该号码?如果我将鼠标悬停在常量上或在 VS2010 的“立即”或“监视”窗口中打印它,我会得到 3.1415926535897931,这也是我在 Reflector 中查看 mscorlib 时得到的值。

虽然它的精度低于 MSDN 声称的精度,但它仍然比您所说的数字要好得多。VS 必须选择一种打印浮点数的格式。从结果来看,我发现默认值是可以接受的。