Domanda

Ho bisogno di formattare un numero come "1,2452" per mostrare "452" Quindi io non voglio vedere tutti i numeri. Il fatto è che io non sono in grado di controllare direttamente il numero del display, posso formattare solo impostando una stringa di formato di tipo a seconda della classe NumberFormatInfo. Questo è possibile, e se sì, come?

applausi

EDIT:

ho scoperto che avrei potuto sottoscrivere un "FormatEvent", che mi ha permesso di rendere formato personalizzato come una stringa dopo la formattazione del numero. Grazie a tutti per l'aiuto e la comprensione! :)

È stato utile?

Soluzione

È possibile creare i propri identificatori di formattazione mediante l'attuazione di IFormatter. Ma non si può farlo per i tipi che sono già cotti in .NET. Come System.Double o System.Decimal, o qualunque sia il tipo della variabile il cui valore è 1,2452. Gli identificatori di formato che sono cotte in per questi tipi standard .NET non consentono di raccogliere fuori le ultime 3 cifre.

Una cultura personalizzato con un alterato NumberFormatInfo non ti dà abbastanza controllo sulla formattazione.

È necessario mettere sotto controllo il valore effettivo. Allora è semplice.

Altri suggerimenti

Sono abbastanza sicuro che non è possibile perché è possibile filtrare solo dal meno al più significativo.

Credo che avremmo bisogno di sapere esattamente che cosa l'algoritmo è necessario formattare il numero. Ma si potrebbe convertire in una stringa e poi basta fare una stringa.

NumberFormatInfo non offre sufficiente flessibilità per ospitare questo formato (bizzarro). Vorrei suggerire solo avere una proprietà di sola lettura che formatta il tuo numero di conseguenza ...

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;
     }
}

utilizzando .net

[math]::pi                             *-- give 3.1415926538979*
([math]::pi).tostring().split(".")[1]  *-- gives: 14159265358979*
([math]::pi).tostring().split(".")[1].substring(0,4) *-- Gives : 1415*
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top