Как указать цифры и десятичные знаки с NumberFormatInfo - PullRequest
0 голосов
/ 29 сентября 2010

Мне нужно отформатировать число, например, «1.2452», чтобы показать «452», поэтому я не хочу видеть все числа.Дело в том, что я не могу напрямую управлять отображаемым числом, я могу только отформатировать его, установив строку формата типа в соответствии с классом NumberFormatInfo.Возможно ли это, и если да, то как?

cheers

EDIT:

Я обнаружил, что могу подписаться на «FormatEvent», который позволил мне сделать собственный формат в виде строки после форматирования числа.Спасибо всем за помощь и понимание!:)

Ответы [ 5 ]

2 голосов
/ 29 сентября 2010

Вы можете создать свои собственные спецификаторы форматирования, внедрив IFormatter.Но вы не можете сделать это для типов, которые уже запечены в .NET.Например, System.Double или System.Decimal или любой другой тип переменной со значением 1,2452.Спецификаторы формата, запеченные для этих стандартных типов .NET, не позволяют выделять 3 последние цифры.

Пользовательская культура с измененным NumberFormatInfo не дает достаточного контроля над форматированием.

Вам необходимо получить контроль над фактическим значением.Тогда это просто.

0 голосов
/ 29 сентября 2010

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;
     }
}
0 голосов
/ 29 сентября 2010

с использованием .net

[math]::pi                             *-- give 3.1415926538979*
([math]::pi).tostring().split(".")[1]  *-- gives: 14159265358979*
([math]::pi).tostring().split(".")[1].substring(0,4) *-- Gives : 1415*
0 голосов
/ 29 сентября 2010

Я думаю, нам нужно точно знать, какой алгоритм вам нужен для форматирования числа. Но вы можете преобразовать его в строку, а затем просто сделать подстроку.

0 голосов
/ 29 сентября 2010

Я почти уверен, что это невозможно, потому что вы можете отфильтровать только от наименее до наиболее значимых.

...