2010-09-29 66 views
0

我需要格式化数字,如“1.2452”以显示“452”所以我不想看到所有的数字。问题是,我无法直接控制显示编号,我只能通过根据NumberFormatInfo类设置一个格式字符串来格式化它。这是可能的,如果是的话,如何?如何使用NumberFormatInfo指定数字和小数位

欢呼

编辑:

我发现我可以订阅“FormatEvent”,这使我对做自定义格式为数字格式后的字符串。感谢大家的帮助和见解! :)

+0

我只是不想显示完整的数字。只有最后的数字很重要。这是外汇报价。 – bretddog 2010-09-29 14:13:42

回答

2

您可以通过实施IFormatter来创建自己的格式说明符。但是你不能这样做那些已经被烘焙到.NET中的类型。像System.Double或System.Decimal一样,或者其值为1.2452的变量类型。这些标准.NET类型的格式说明符不允许选取最后3位数字。

带有已更改的NumberFormatInfo的自定义文化不支持对格式设置的足够控制。

您需要控制实际值。然后它很简单。

0

我敢肯定,这是不可能的,因为你只能从最不重要的过滤出来。

0

我想我们需要确切知道你需要什么算法来格式化数字。 但你可以将它转换为一个字符串,然后只是做一个子串。

0

使用.NET

[math]::pi        *-- give 3.1415926538979* 
([math]::pi).tostring().split(".")[1] *-- gives: 14159265358979* 
([math]::pi).tostring().split(".")[1].substring(0,4) *-- Gives : 1415* 
+1

使用.NET?你确定吗?! – 2010-09-29 16:07:14

0

的NumberFormatInfo没有提供足够的灵活性,以适应这个(奇异)格式。我建议只是有一个ReadOnly财产,相应地设置您的号码的格式...

public string NumberFormatted 
{ 
    get 
    { 
     string num = YourNumber.ToString(); 
     int index = num.IndexOf("."); 
     if(index > -1 && index < num.Length - 2) 
      num = num.Substring(index + 2); 
     return num; 
    } 
} 
相关问题