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

VB.NET Discussion :

Val() ou Cx ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut Val() ou Cx ?
    Soir All,

    J'aimerai avoir vos avis/informations sur l'utilisation de val() par rapport à Cxxx et inversement.
    J'ai entre-apercu qu'il valait mieux ne pas utiliser val, mais sans explication.

    Merci d'eclairer mes lanternes.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    val est hérité de vb6 (cint et ses acolytes aussi) et certains disent donc d'éviter tout ce qui est de vb6
    mais le tas d'instructions qu'on trouve qui viennent de vb6 sont toutes codées avec le framework ou sont des alias de méthodes du framework

    cint par exemple n'est pas dans le framework c'est un mot clé du langage visual basic, sous .net il est traduit par le compilateur (par int.tryparse si je me rappelle bien, enfin ca peut se vérifier)

    val par contre est trouvable dans le framework, en regardant le code je me suis dit que vu le nombre de lignes c'était peut etre moins performant que double.parse, mais en regardant double.parse y a encore plus de code et 3 ou 4 appels de méthodes (le code a l'air d'avoir quelques similitudes)

    shell aussi est hérité de vb6 et partout les gens disent "ah c'est moche, utilisez process.Start !"
    mais quand on regarde avec reflector, le code de shell et celui de process.start sont quasi identiques

    donc moi ce que j'en pense, c'est qu'on fait du vb.net donc basé sur le langage vb, donc autant utiliser les mots clés de vb si on a envie ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Merci pour tes commentaires, mais ma question portait plus sur la qualite de conversion.
    J'avoue que quand j'ai besoin de convertir un string en numerique, j'utilise automatiquement le val

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut

    sur la qualité de la conversion ???
    ca veut pas dire grand chose ...

    val te donne un double
    double.parse aussi
    et cdbl aussi
    donc tu utilises celui que tu veux (c'est à peu près ce que j'ai dit précédemment)
    et ca peut parraitre logique mais si tu veux un int, cint est quand meme à privilégier par rapport à un val

    après, les doubles sont en général à éviter en informatique, les decimal évitant les "bugs"
    (exemple ici avec 80,74 *100 = 8073.99999999999991 : http://www.developpez.net/forums/d81...-correctement/ )
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    ca peut parraitre logique mais si tu veux un int, cint est quand meme à privilégier par rapport à un val
    Voila, on arrive au coeur de ma question, pourquoi est-il à privilegier ?

    Citation Envoyé par Pol63 Voir le message
    après, les doubles sont en général à éviter en informatique, les decimal évitant les "bugs"
    (exemple ici avec 80,74 *100 = 8073.99999999999991 : http://www.developpez.net/forums/d81...-correctement/ )
    C'est de ce genre de truc donc je parlais

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    val te donne un double
    et ca peut parraitre logique mais si tu veux un int, cint est quand meme à privilégier par rapport à un val
    Citation Envoyé par Danyel Voir le message
    Voila, on arrive au coeur de ma question, pourquoi est-il à privilegier ?

    l'intellisense précise que val retourne un double
    donc si tu veux un int, pourquoi utiliserais tu val au lieu de cint ???
    y a pas besoin de réfléchir longtemps pour ca quand meme ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Par défaut
    Val peut s'utiliser de trois façons dont une qui prend en entrée un Char et renvoie un Int, les deux autres renvoyant un Double effectivement.

    Maintenant, je ne crois pas que ce soit le fond du problème de Danyel puisqu'il a parlé de string en entrée...

    Sur la façon de stocker les doubles, Wikipedia détaille toutes les bizarreries que l'on peut rencontrer : http://fr.wikipedia.org/wiki/IEEE_754

Discussions similaires

  1. [Debutant]Remplacer une liste de valeur par une liste de val
    Par Sebbo dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 31/03/2006, 12h15
  2. Correspondance Val() en alphanumerique
    Par Otacon81 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 30/11/2005, 19h07
  3. [VAL] Opérations arithmétiques
    Par WriteLN dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/05/2005, 09h59
  4. Réponses: 9
    Dernier message: 07/09/2004, 11h12
  5. SELECT : extraire 2 val d'1 colonne avec contraintes diff
    Par NiBicUs dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/03/2004, 14h56

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