C#datatype double不打印我期望的内容

时间:2014-12-13 20:15:27

标签: c#

C#datatype double不打印我期望的内容

 namespace test
 {
     class SampleProgram
     {
         static void Main(string[ ] args)
         {
            int i = 10;
            double d = 34.340;
            fun(i);
            fun(d);
         }

         static void fun(double d)
         {
            Console.WriteLine(d + " ");
         }
    }
}

为什么这会产生10 34.34而不是10 34.340?

2 个答案:

答案 0 :(得分:1)

对于计算机,值为34.3434.34034.3400的double都是等效的,并且在内存中表示相同。

您遇到的是运行时返回数据的方式与向用户显示的方式不同的标准问题。处理此问题的方法是利用.Net提供的众多格式化工具之一。

您可以在double数据类型上使用ToString方法,并使用自定义格式字符串:

double value = 34.34;
Console.WriteLine(value.ToString("0.000"));   // 34.340

您还可以在String.Format中使用自定义格式字符串:

double value = 34.34;
Console.WriteLine(String.Format("The value is {0:0.000}", value));

答案 1 :(得分:0)

您必须将自定义格式应用于double值,请参阅字符串格式选项和示例 http://msdn.microsoft.com/en-us/library/0c899ak8(v=vs.110).aspx

e.g。 number.ToString(“G”,CultureInfo.InvariantCulture)