【问题标题】:Using custom string format for decimal number c#对十进制数使用自定义字符串格式c#
【发布时间】:2017-03-11 08:56:43
【问题描述】:

我在数据库中得到了一个小数点后 4 位的十进制值,但我需要显示格式,后面有没有 0 的千位分隔符。我已经尝试过 G、F、N 格式,但对我想要的结果没有任何线索。

1234.3456          // 1,234.3456
1234.0000          // 1,234.00
1234.3450          // 1,234.345
1234.345678        // 1,234,3457
1234               // 1,234.00
1234.2             // 1,234,20

【问题讨论】:

  • 但我对我想要的结果没有任何线索

标签: c# .net formatting string-formatting number-formatting


【解决方案1】:

这里很简单,就是解决这个问题的例子。如果它解决了您的问题,请不要忘记标记为答案:)

 double value;

  value = 123;
  Console.WriteLine(value.ToString("00000"));
  Console.WriteLine(String.Format("{0:00000}", value));
  // Displays 00123

  value = 1.2;
  Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                    "{0:0.00}", value));
  // Displays 1.20

  Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:00.00}", value));
  // Displays 01.20

  CultureInfo daDK = CultureInfo.CreateSpecificCulture("da-DK");
  Console.WriteLine(value.ToString("00.00", daDK)); 
  Console.WriteLine(String.Format(daDK, "{0:00.00}", value));
  // Displays 01,20

  value = .56;
  Console.WriteLine(value.ToString("0.0", CultureInfo.InvariantCulture));
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:0.0}", value));
  // Displays 0.6

  value = 1234567890;
  Console.WriteLine(value.ToString("0,0", CultureInfo.InvariantCulture));   
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:0,0}", value));   
  // Displays 1,234,567,890      

  CultureInfo elGR = CultureInfo.CreateSpecificCulture("el-GR");
  Console.WriteLine(value.ToString("0,0", elGR));   
 Console.WriteLine(String.Format(elGR, "{0:0,0}", value));  
  // Displays 1.234.567.890

  value = 1234567890.123456;
  Console.WriteLine(value.ToString("0,0.0", CultureInfo.InvariantCulture)); 
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:0,0.0}", value)); 
  // Displays 1,234,567,890.1  

  value = 1234.567890;
  Console.WriteLine(value.ToString("0,0.00", CultureInfo.InvariantCulture));    
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:0,0.00}", value));    
  // Displays 1,234.57 

【讨论】:

    【解决方案2】:

    实际上,Decimal.ToString 的 MSDN 页面几乎完全符合您在上一个示例中所需要的内容。

    说明符 = "#,#.00#;(#,#.00#)"

    所以只需删除否定格式,并在末尾添加一个额外的# 即可:
    specifier = "#,#.00##"

    刚刚尝试过:

    decimal[] decimals = {1234.3456M, 1234.0000M, 1234.3450M, 1234.345678M, 1234, 1234.2M};
    string[] formattedDecimals = decimals.Select(d => d.ToString(specifier)).ToArray();
    

    【讨论】:

      猜你喜欢
      • 2011-01-04
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 2011-05-04
      相关资源
      最近更新 更多