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


73

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

Answers:


136

签出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 2.0的.NET Core上,运行时选择具有最低有效数字的结果(即,使用MidpointRounding.AwayFromZero)。
  • 在.NET Core 2.1和更高版本上,运行时将选择具有最低有效数字的结果(即,使用MidpointRounding.ToEven)。

41
很高兴知道N0为1054.56,返回1,055而不是1,054。相当相关!
Xavier Egea

4

这是文档所在的位置:

http://msdn.microsoft.com/zh-CN/library/dwhawy9k.aspx

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

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

http://msdn.microsoft.com/zh-CN/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

你可以找到的格式列表在这里(在Double.ToString() - MSDN -文章)作为例子节发表了评论。


0

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

是什么N做的是,它根据您的分离数到千位小数的CultureInfo,代表只有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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.