2012-11-15 116 views
0

我想删除小数部分的尾部零。它从数据库中精确加载5.删除十进制的零尾部分

我正在使用逗号(,)为小数点的文化。

例如:

  • 10,00050 - > 10,0005
  • 10,00000 - > 10
  • 0,00000 - > 0
  • 0.00001 - > 0.00001

我可以使用General ("G") Format Specifier但我不希望科学记数法在任何时候。

BR,m。

+0

10,00000 - > 10,这是留下了尾随零。错字? – PeteGO

+1

@PeteOakey可能不会,因为它在小数点之前。 (我假设OP使用'''作为小数点的文化' – CodesInChaos

+0

@PeteOakey他指的是在小数点分隔符右边的尾部零 – Servy

回答

3

您可以使用custom numeric format string

decimal d = 12.45600m; 
d.ToString("0.#####"); 
+0

这不太合适:它会舍入到12.45679。假设Decimal是456789000.你怎么样格式化为12.456789? –

+0

@ReacherGilt“从数据库精确加载5.” – Guillaume

+0

“您的示例是精度6” –

-1

尝试“N”,如果数字为一千或更多,则会添加逗号。

0

可能有更优雅的解决方案,但这对字符串有效。

string[] decimals = { 
           "10,00050",// -> 10,0005 
           "10,00000",// -> 10 
           "0,00000",// -> 0 
           "0,00001",// -> 0,00001 
          }; 
     foreach (string dec in decimals) 
     { 
      Console.WriteLine(" {0} -> {1}", dec, decimal.Parse(dec.TrimEnd(new char[] { '0' }))); 
     } 
+0

我建议在字符串<->的十进制转换中指定'InvariantCulture'。我不相信文化 – CodesInChaos