none
Math.PI 字段及C#程序的编译 RRS feed

  • 问题

  • Math.PI 字段 此字段的值为 3.14159265358979323846(在MSDN帮助文档中是这么说的) 但是在程序中Console.WriteLine("Area = {0}", Math.PI)或Label1.Text = Math.PI.ToString(); Math.PI的值为3.14159265358979 请问是不是MSDN帮助文档错误?

    从概念上讲,C#程序的编译分三个步骤:1. 转换,这一步将用特定字符指令系统和编码方案编写的文件转换为 Unicode 字符序列。2. 词法分析,这一步将 Unicode 输入字符流转换为标记流。3. 句法分析,这一步将标记流转换为可执行代码。(MSDN是这么说的) 。我的问题一:1.转换,这一步将用特定字符指令系统和编码方案编写的文件转换为 Unicode 字符序列,是不是应该改为 1. 转换,这一步将特定字符指令系统和编码方案编写的文件转换为 Unicode 字符序列,也就是把“用”字去掉。我的问题二:什么是特定字符指令系统和编码方案编写的文件?

    2011年4月1日 2:25

答案

  • ToString默认显示的位数有限。你可以指定试试,手上没有vs.net没测试。
    Label1.Text = Math.PI.ToString("f20");

    编译过程大概的说法应该是进行词法分析、语法分析、语义分析,然后转换成IL,在连接时连接为一个exe。

    细节上,可能对字符串的处理回有一些格式转换。


    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年4月1日 6:23
    版主
  • 建议您直接利用断点或者 Reflector 看 PI 的值,用 Label 或者 WriteLIne 的时候需要 ToString,而 ToString 是有小数位限制的。

    第二个问题,这里说的是对的,用。。。编写的文件,其修饰的是文件,此处的文法没有不妥。去掉用字后语法也能被理解,但主语文件是被一个被动定语短语修饰的,这个事实无法改变。


    Mark Zhou
    2011年4月1日 9:36

全部回复

  • ToString默认显示的位数有限。你可以指定试试,手上没有vs.net没测试。
    Label1.Text = Math.PI.ToString("f20");

    编译过程大概的说法应该是进行词法分析、语法分析、语义分析,然后转换成IL,在连接时连接为一个exe。

    细节上,可能对字符串的处理回有一些格式转换。


    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年4月1日 6:23
    版主
  • 建议您直接利用断点或者 Reflector 看 PI 的值,用 Label 或者 WriteLIne 的时候需要 ToString,而 ToString 是有小数位限制的。

    第二个问题,这里说的是对的,用。。。编写的文件,其修饰的是文件,此处的文法没有不妥。去掉用字后语法也能被理解,但主语文件是被一个被动定语短语修饰的,这个事实无法改变。


    Mark Zhou
    2011年4月1日 9:36