C#

Signaler
Messages postés
23
Date d'inscription
mardi 8 novembre 2005
Statut
Membre
Dernière intervention
24 juin 2009
-
Messages postés
20
Date d'inscription
vendredi 4 février 2005
Statut
Membre
Dernière intervention
13 mai 2008
-
Salut ...

Comment recupérer les chiffre aprés la firgule ...
exp (1545,123)
j'ai besoin des numero 123
merci......

11 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Salut,
Pourquoi as-tu poster le message dans la rubriques Mono ?
Sinon, tu peux utiliser la méthode Split de l'object string...

<hr size= "2" /> VC# forever
=13319
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Tout le monde poste sur Mono quand il s'agit d'une question generale...
Je déplace

Mx
MVP C# 
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
C'est bizarre, j'etait persuadé qu'il y avait une méthode pour recuperer la partie flottante d'un nombre avec decimales, mais je la retrouve pas.
Donc au pire, tu peux utiliser :

tonNombre - Math.Truncate(tonNombre)

Mais je pense que la méthode de Bidou est plus efficace, ou alors combiner IndexOf et Substring.

Mx
MVP C# 
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
exp = 1545,123

exp - Math.Abs(exp)

::|The S@ib|:: MVP C#.NET
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
TheSaib> Pas essayé, mais le morceau de code que tu as mis retournerait plutôt 0.123 non?
Alors que ce qu'on aimerait c'est 123.

<hr size= "2" /> VC# forever
=13319
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Ouep, le mien aussi retournerait 0.123 d'ailleurs

Mx
MVP C# 
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Bien vu.

::|The S@ib|:: MVP C#.NET
Messages postés
20
Date d'inscription
vendredi 4 février 2005
Statut
Membre
Dernière intervention
13 mai 2008

Bonsoir,

voiçi une solution à votre problème si vous ne l'avez pas déjà trouvé.

En tout cas merci, c'était un exercice interressant.

decimal nb = (
decimal)479.542415788; // par exemple

decimal exp = nb%1;
string res Convert.ToString(exp);exp(

int) (exp * (
decimal)
Math.Pow(10,(res.Length)-2));
// -2, car "0,"

Console.WriteLine(exp);

.Enzyme
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Ou, comme proposer plus haut :

decimal nb = (
decimal)479.542415788;

int x =
Int32.Parse(nb.ToString().Split(
'.')[1]);

Remarque :
Au lieu de splitter sur le '.', on peut chercher le caractère de la culture courante qui fait office de "séparateur".
Il faut s'assurer que le nombre d'entier après la virgule ne dépasse pas la taille d'un int.

<hr size="2" /> VC# forever
=13319
Messages postés
20
Date d'inscription
vendredi 4 février 2005
Statut
Membre
Dernière intervention
13 mai 2008

Bonsoir,

Merci le "Trigre",

char

Separateur = System.Globalization.
CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator[0];

int n =
Int32.Parse(nb.ToString().Split(Separateur)[1]);
de cette façon plus besoin de chercher le séparateur. Je savais bien que l'on pouvais faire plus simple que le code que j'avais écris......................

Encore merci

.Enzyme
Messages postés
20
Date d'inscription
vendredi 4 février 2005
Statut
Membre
Dernière intervention
13 mai 2008

Bonsoir,

Avec cela plus de problème de séparateur décimal. Bon Ok il reste le problème de la limite imposée par Int32.

char




Separateur = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator[0];



int n = Int32.Parse(nb.ToString().Split(Separateur)[1]);



Super j'ai beaucoup appris ce soir ... merci à tous







.Enzyme