什么是ToString(“N0”)格式?

时间:2013-04-25 08:08:14

标签: c# .net number-formatting

此代码来自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文档中的正确位置。

5 个答案:

答案 0 :(得分:102)

在MSDN上查看following article有关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)。
  •   

答案 1 :(得分: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 ) );

答案 2 :(得分:3)

这可能是一个好的开始

Double.ToString()

在示例中查看一些不同的格式化选项Double.ToString(string)

答案 3 :(得分:2)

您可以在示例部分中找到格式列表here(在Double.ToString() - MSDN文章中)作为注释。

答案 4 :(得分:0)

这是一种用于格式化数字结果的格式说明符。还有其他说明符on the link

@Valid @RequestBody List<KPIReq> kpiReqList的作用是根据您的CultureInfo将数字分隔成千位小数位,并且在N的浮动部分中仅舍入两位小数,如果舍入最右位

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();

        }
    }
}