2010-09-29 13 views
0

Je dois formater un nombre comme "1.2452" pour afficher "452" Donc je ne veux pas voir tous les nombres. La chose est, je ne suis pas en mesure de contrôler le numéro d'affichage directement, je ne peux le formater en définissant une chaîne de format de type en fonction de la classe NumberFormatInfo. Est-ce possible, et si oui comment?Comment spécifier les chiffres et les décimales avec NumberFormatInfo

acclamations

EDIT:

J'ai découvert que je pouvais souscrire à un « FormatEvent », ce qui m'a permis de faire le format personnalisé en tant que chaîne après la mise en forme numérique. Merci à tous pour votre aide et votre perspicacité! :)

+0

Je ne veux tout simplement pas afficher le nombre entier. Seuls les derniers chiffres comptent. C'est pour les citations de forex. – bretddog

Répondre

2

Vous pouvez créer vos propres spécificateurs de mise en forme en implémentant IFormatter. Mais vous ne pouvez pas le faire pour les types qui sont déjà cuits dans .NET. Comme System.Double ou System.Decimal, ou quel que soit le type de la variable dont la valeur est 1.2452. Les spécificateurs de format qui sont cuits pour ces types standard .NET ne permettent pas de sélectionner les 3 derniers chiffres.

Une culture personnalisée avec un NumberFormatInfo modifié ne vous donne pas assez de contrôle sur le formatage.

Vous aurez besoin de contrôler la valeur réelle. Alors c'est simple.

0

Je suis assez sûr que ce n'est pas possible parce que vous ne pouvez filtrer que du moins important.

0

Je suppose que nous aurions besoin de savoir exactement quel algorithme vous avez besoin pour formater le nombre. Mais vous pouvez le convertir en une chaîne, puis juste faire une sous-chaîne.

0

utilisant .net

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

Utilisation de .NET? Êtes-vous sûr de cela?! –

0

NumberFormatInfo ne fournit pas assez de souplesse pour accueillir ce format (bizarre). Je suggère simplement d'avoir une propriété ReadOnly qui formate votre nombre en conséquence ...

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