C# 数据类型加倍不打印我所期望的

本文关键字:期望 打印 数据类型 | 更新日期: 2023-09-27 18:34:06

C# 数据类型双精度不打印我所期望的

 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 ?

C# 数据类型加倍不打印我所期望的

对于计算机来说,值为 34.3434.34034.3400 的双精度值都是等价的,并且在内存中表示相同。

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

可以将 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));
您必须将

自定义格式应用于双精度值,请参阅此处的字符串格式选项和示例http://msdn.microsoft.com/en-us/library/0c899ak8(v=vs.110(.aspx

例如数字。ToString("G", CultureInfo.InvariantCulture(