FormatNumber / FormatCurrency en C#

Résolu
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 18 août 2004 à 15:02
zigxag Messages postés 142 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 2 octobre 2008 - 28 mars 2006 à 14:23
J'aimerais connaitre l'équivalent de FormatNumber / FormatCurrency en C#

Ces deux fonctions sont situé dans l'assembly Microsoft.VisualBasic.dll j'ai essayé de faire un import mais je peux rien en faire.

j'ai ecrit ce programme en VB.net
Dim s As String = FormatNumber(5.125, 2)
Dim s2 As String = FormatCurrency(5.125, 2)

je l'ai compilé puis décompiler via Reflector, et j'ai traduit le code IL en C# toujours via Reflector (cette astuce m'a bcp aidé pour traduire des codes Vb<=>C#)

et le code qui me donnait pour les deux lignes suivante sont :
string text1 = Strings.FormatNumber(5.125f, 2, TriState.UseDefault, TriState.UseDefault, TriState.UseDefault);
string text2 = Strings.FormatCurrency(5.125f, 2, TriState.UseDefault, TriState.UseDefault, TriState.UseDefault);

J'ai essayé ca, mais ca marche pas :(

le code IL est
L_0016: call string [Microsoft.VisualBasic]Microsoft.VisualBasic.Strings::FormatNumber(object, int32 etc....(valeur par defaut)

Merci de bien vouloir m'aider :)

Je travaille avec Visual C# 2005 express donc C#2

Merci

Cyril

8 réponses

cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
18 août 2004 à 15:48
string s = monfloat.ToString ("# ###.##");

En 2.0 j'ai pas encore essayé, mais en 1.x ceci fonctionnait a merveille :)

Mais en fait ta traduction devrait fonctionner si tu as bien la references a la DLL Microsoft.VisualBasic.dll dans ton projet et un beau using en haut :p

A++

:-p Crazyht :)
MVP Visual C#.NET

[Admin Codes-Sources]
[Membre Developer-Association]
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 août 2004 à 16:44
ca marche !!! :question)

J'avais testé le code sur un ancien projet console, et la j'ai refait un projet tout neuf pour ce code, et il m'indique plus d'erreur :)

J'ai meme accés a toutes les propriétés Visual Basic, comme quoi VB nous sert meme quand on fait des projets en C#

Merci de t'etre penché sur le problème

Je sais pas d'ou l'erreur a pu venir, mais c'est qu'une version beta de Visual C# express, donc le problème vient surement de la :)

Merci

Cyril
3
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
18 août 2004 à 16:21
Sinon voir string.Format (...) mais la je galere a chaque fois avec la doc :)

A++

:-p Crazyht :)
MVP Visual C#.NET

[Admin Codes-Sources]
[Membre Developer-Association]
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 août 2004 à 16:39
Oui je connais l'astuce, mais j'ai aussi besoin de FormatCurrency, et certaines options sont bien agreables :)
ca evite de coder bcp de choses par exemple pour faire ca :

Dim i2 As Integer = 4
Dim MonCompteEnBanqueDansMesReves As Decimal = 99999999.99999
Dim Resultat As String = FormatCurrency(MonCompteEnBanqueDansMesReves, i2, , , TriState.True)
Console.WriteLine(Resultat)
Console.ReadLine()

ce qui m'affiche 100 000 000,0000 € (<-- signe €)

en vb il faut qu'une ligne grace à FormatCurrency en C# il va falloir tout recoder, et il y a qd meme pas mal de choses à faire ...

pour info le code C# traduit via Reflector est :

public static void Main()
{
      int num1 = 4;
      decimal num2 = new decimal(1316134911, 2328, 0, false, 5);
      string text1 = Strings.FormatCurrency(num2, num1, TriState.UseDefault, TriState.UseDefault, TriState.True);
      Console.WriteLine(text1);
      Console.ReadLine();
}


(j'ai été surpris par le constructeur du decimal :big) )

Je pensais donc faire un using mais ca a pas l'air de marcher :sad)

Une idée ?

Cyril
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
18 août 2004 à 16:46
Tu as bien mis la dll dans tes references ?

A++

:-p Crazyht :)
MVP Visual C#.NET

[Admin Codes-Sources]
[Membre Developer-Association]
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 août 2004 à 19:25
Apparemment nous ne sommes pas les seuls a ne rien comprendre à la doc de string.format :

--> http://blogs.developpeur.org/themit/archive/2004/08/18/2315.aspx

en tout cas moi il va souvent m'aider :)

pour ce qui est du bug, je sais pas si ca vient de ne pas avoir ajouté la dll dans mes references, mais c'est possibles car je me rappelle plus de l'avoir fait (finalement c'est peut etre pas de la faute de la version beta :-p )

@+

Cyril
0
zigxag Messages postés 142 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 2 octobre 2008 12
28 mars 2006 à 14:17
Bonjour !
Et comment tranformer un decimal de format 1.15000 en string comme ceci : 1.15 ?
0
zigxag Messages postés 142 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 2 octobre 2008 12
28 mars 2006 à 14:23
oups scuse j'avais mal lu le post
0
Rejoignez-nous