IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Savoirr le 4 eme caractere apres la virgule est un zero. Regex ? [Débutant]


Sujet :

C#

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut Savoirr le 4 eme caractere apres la virgule est un zero. Regex ?
    Bonjour

    Je souhaite savoir si le 4 eme caractere apres la virgule dans un decimal positif est un 0 (zero)

    Actuellement je le fais en le convertissant en string, en cherchant la position de la virgule et calculant la longeur de la partie decimale car je peux avoir 1.234567 comme 0.1 et là si je me sert d un simple substring, ça leve une exception.


    Mon idee etait donc de trouver un moyen plus rapide et j ai pensé aux regex... que je ne connais pas .

    Donc ma question : cela est il possible et quel pattern utiliser ?

    merci de votre aide

    stephane

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    J'ai encore plus simple :
    1. Tu multiplies ton nombre par 10000 ;
    2. Tu tronques le nombre pour supprimer tout ce qu'il y a après la virgule ;
    3. Tu le converti en entier ;
    4. Tu effectues une division entière par 10 pour récupérer le reste via l'opérateur modulo %.


    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    float f = 456.65478;
    int i = Convert.ToInt32(Math.Truncate(f * 10000, 0)) % 10
    Tu as alors le 4ème chiffre après la virgule, quelque soit le nombre de départ. Tu le compares ensuite à ce que tu veux
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  3. #3
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Citation Envoyé par dorinf Voir le message
    quelque soit le nombre de départ.
    sauf si par malheur le nombre en question est supérieur à type.MaxValue / 10000 avec type valant float double ou decimal selon ce qui est actuellement utilisé (et dans le cas d'un double on pourrait même pas feinter avec un cast dans une représentation plus large)

    Question regex, sans trop chercher à savoir si c'est la meilleure approche un motif de ce type pourrait a priori convenir (à vérifier tout de même) "^\d+(?:\.\d{3}0\d*)?$" par contre s'il faut aussi gérer les formats scientifiques là ça peut vite se compliquer.
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Merci pour ces reponses.
    S agissant de mes nombres ils sont relativement faibles, je n imagine pas plus de 1000.

    Comme je cherche la rapidité, je testerai les deux solution sur une large boucle et retiendrais la plus rapide.
    Stéphane.

  5. #5
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    sauf si par malheur le nombre en question est supérieur à type.MaxValue / 10000 avec type valant float double ou decimal selon ce qui est actuellement utilisé (et dans le cas d'un double on pourrait même pas feinter avec un cast dans une représentation plus large)
    Tout à fait juste ! Je faisais allusion à la présence ou non des décimales (le "1.234567 comme 0.1"). Merci pour la précision donc.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] Supprimer virgule et X caracteres apres
    Par eric0279 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 19/07/2016, 10h23
  2. [Nombre]formater le nombre de décimal après une virgule.
    Par PascalCmoa dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 09/03/2007, 10h40
  3. Chiffres après la virgule figés
    Par bondjames dans le forum Bases de données
    Réponses: 6
    Dernier message: 10/03/2004, 23h09
  4. [MFC] Nombre de chiffres après la virgule
    Par karl3i dans le forum MFC
    Réponses: 3
    Dernier message: 27/01/2004, 13h04
  5. Nb de chiffres après la virgule ?
    Par Thcan dans le forum C
    Réponses: 10
    Dernier message: 17/09/2003, 21h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo