积极答复者
Math.PI 字段及C#程序的编译

问题
-
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 字符序列,也就是把“用”字去掉。我的问题二:什么是特定字符指令系统和编码方案编写的文件?
答案
-
ToString默认显示的位数有限。你可以指定试试,手上没有vs.net没测试。
Label1.Text = Math.PI.ToString("f20");编译过程大概的说法应该是进行词法分析、语法分析、语义分析,然后转换成IL,在连接时连接为一个exe。
细节上,可能对字符串的处理回有一些格式转换。
2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。- 已标记为答案 Lie YouModerator 2011年4月8日 1:58
-
建议您直接利用断点或者 Reflector 看 PI 的值,用 Label 或者 WriteLIne 的时候需要 ToString,而 ToString 是有小数位限制的。
第二个问题,这里说的是对的,用。。。编写的文件,其修饰的是文件,此处的文法没有不妥。去掉用字后语法也能被理解,但主语文件是被一个被动定语短语修饰的,这个事实无法改变。
Mark Zhou- 已标记为答案 Lie YouModerator 2011年4月8日 1:58
全部回复
-
ToString默认显示的位数有限。你可以指定试试,手上没有vs.net没测试。
Label1.Text = Math.PI.ToString("f20");编译过程大概的说法应该是进行词法分析、语法分析、语义分析,然后转换成IL,在连接时连接为一个exe。
细节上,可能对字符串的处理回有一些格式转换。
2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。- 已标记为答案 Lie YouModerator 2011年4月8日 1:58
-
建议您直接利用断点或者 Reflector 看 PI 的值,用 Label 或者 WriteLIne 的时候需要 ToString,而 ToString 是有小数位限制的。
第二个问题,这里说的是对的,用。。。编写的文件,其修饰的是文件,此处的文法没有不妥。去掉用字后语法也能被理解,但主语文件是被一个被动定语短语修饰的,这个事实无法改变。
Mark Zhou- 已标记为答案 Lie YouModerator 2011年4月8日 1:58