82

此代码来自 Charles Pettzold 的“Programming Windows Sixth Edition”一书:

public object Convert(object value, Type targetType, object parameter, string language) 
{ 
    return ((double)value).ToString("N0"); 
}

ToString("N0")应该打印带有逗号分隔符且没有小数点的值。我在文档中找不到对适当ToString重载和"N0"格式的引用。请指出我在 .NET 文档中的正确位置。

4

5 回答 5

161

查看following articleMSDN 上有关N格式示例的信息。这也包括在Standard Numeric Format Strings文章中。

相关摘录:

//       Formatting of 1054.32179:
//          N:                     1,054.32 
//          N0:                    1,054 
//          N1:                    1,054.3 
//          N2:                    1,054.32 
//          N3:                    1,054.322 

当精度说明符控制结果字符串中的小数位数时,结果字符串反映了一个数字,该数字四舍五入为最接近无限精确结果的可表示结果。如果有两个同样接近的可表示结果:

  • 在 .NET Framework 和 .NET Core 直到 .NET Core 2.0 上,运行时选择具有较大最低有效数字的结果(即使用 MidpointRounding.AwayFromZero)。
  • 在 .NET Core 2.1 及更高版本上,运行时选择具有偶数最低有效数字的结果(即使用 MidpointRounding.ToEven)。
于 2013-04-25T08:09:39.460 回答
4

这是文档所在的位置:

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

数字(“N”)格式说明符将数字转换为“-d,ddd,ddd.ddd…”形式的字符串,其中“-”表示负数符号(如果需要),“d”表示数字(0 -9) ...

这就是他们谈论默认值(2)的地方:

http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.numberdecimaldigits.aspx

      // Displays a negative value with the default number of decimal digits (2).
      Int64 myInt = -1234;
      Console.WriteLine( myInt.ToString( "N", nfi ) );
于 2013-04-25T08:14:07.420 回答
3

这是一个好的开始

Double.ToString()

查看示例以了解许多不同的格式化选项Double.ToString(string)

于 2013-04-25T08:11:45.683 回答
2

您可以在此处(在 Double.ToString()-MSDN-Article 中)找到格式列表作为示例部分中的注释。

于 2013-04-25T08:11:57.137 回答
0

它是一种用于格式化数字结果的格式说明符。链接上还有其他说明符。

它的作用是根据您的CultureInfoN将数字分隔成千位小数,并且在浮动部分中仅表示 2 个小数位,必要时通过舍入最右边的数字。N2

N0不代表任何小数位,但对其应用四舍五入。

让我们举例说明。

using System;
using System.Globalization;


namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            double x = 567892.98789;
            CultureInfo someCulture = new CultureInfo("da-DK", false);

            // 10 means left-padded = right-alignment
            Console.WriteLine(String.Format(someCulture, "{0:N} denmark", x));
            Console.WriteLine("{0,10:N} us", x); 

            // watch out rounding 567,893
            Console.WriteLine(String.Format(someCulture, "{0,10:N0}", x)); 
            Console.WriteLine("{0,10:N0}", x);

            Console.WriteLine(String.Format(someCulture, "{0,10:N5}", x));
            Console.WriteLine("{0,10:N5}", x);


            Console.ReadKey();

        }
    }
}

它产生,

567.892,99 denmark
567,892.99 us
   567.893
   567,893
567.892,98789
567,892.98789
于 2019-11-25T06:39:30.480 回答