如何使用NumberFormatInfo指定数字和小数位

时间:2010-09-29 13:29:52

标签: .net number-formatting

我需要格式化一个像“1.2452”这样的数字来显示“452”所以我不想看到所有数字。问题是,我无法直接控制显示数量,我只能通过根据NumberFormatInfo类设置类型的格式字符串来格式化它。这是可能的,如果是这样的话怎么样?

欢呼声

编辑:

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

5 个答案:

答案 0 :(得分:2)

您可以通过实施IFormatter来创建自己的格式设置说明符。但是对于已经嵌入.NET的类型,你不能这样做。与System.Double或System.Decimal类似,或者是值为1.2452的变量类型。为这些标准.NET类型烘焙的格式说明符不允许拾取最后3位数字。

具有更改的NumberFormatInfo的自定义区域性不足以控制格式。

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

答案 1 :(得分:0)

我很确定这是不可能的,因为你只能从最不重要的过滤掉。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

使用.net

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

答案 4 :(得分: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;
     }
}