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 :

A propos de Math.Floor


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut A propos de Math.Floor
    Hello,

    De temps à autre, je remarque des choses qui me paraissent étranges dans le Framework .NET.

    Aujourd'hui par exemple, je remarque que la fonction Math.Floor renvoie un objet de type Decimal.

    Pour ceux qui ne la connaîtraient pas, cette fonction renvoie le plus grand entier inférieur ou égal à un nombre donné.

    Pour diable donc le type de l'objet retourné par cette fonction est-il Decimal ?

    Y a-t-il des cas où un nombre décimal est renvoyé ? Qu'ils mettent à jour le descriptif de la fonction dans ce cas non ? En tout cas, il n'y rien sur la page msdn de cette fonction qui expliquerait cela.

    Alors j'imagine bien que les types qui ont développé le Framework sont d'un tout autre niveau que le mien et donc j'imagine qu'il doit bien y avoir une raison. Du coup, si quelqu'un la connaît, son partage serait bien urbain.

    A moins qu'il ne s'agisse d'une simple petite erreur. Elle est humaine après tout...

    Merci d'avance.
    Kropernic

  2. #2
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Maths.Floor renvoir un décimal ou un double, selon si c'est un décimal ou un double placé en paramètre.

    Peut-être que ça lui évite des soucis avec int32/int64 et que c'est fait pour faciliter la migration vers x64 ?

    Int32.MaxValue -> 2,147,483,647
    Int64.MaxValue -> 9,223,372,036,854,775,807

    A moins qu'il ne s'agisse d'une simple petite erreur. Elle est humaine après tout...
    Depuis le temps que cette fonction existe et est utilisée, le problème aurait déjà été reporté je pense ...
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  3. #3
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Console.WriteLine(Math.Floor(42m + (decimal)long.MaxValue)); // Ne rentre pas dans un long
    Console.WriteLine(long.MaxValue);
     
    // 9223372036854775849
    // 9223372036854775807
    Il faut donc renvoyer un decimal et non un long ou un int

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Citation Envoyé par _Ez3kiel Voir le message
    Depuis le temps que cette fonction existe et est utilisée, le problème aurait déjà été reporté je pense ...
    C'est la réflexion que j'ai eue et qui m'a poussée à poser la question ici ^^.

    Citation Envoyé par meziantou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Console.WriteLine(Math.Floor(42m + (decimal)long.MaxValue)); // Ne rentre pas dans un long
    Console.WriteLine(long.MaxValue);
     
    // 9223372036854775849
    // 9223372036854775807
    Il faut donc renvoyer un decimal et non un long ou un int
    Ah bin voilà !

    Je m'endormirai moins bête ce soir
    Kropernic

  5. #5
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par meziantou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Console.WriteLine(Math.Floor(42m + (decimal)long.MaxValue)); // Ne rentre pas dans un long
    Console.WriteLine(long.MaxValue);
     
    // 9223372036854775849
    // 9223372036854775807
    Il faut donc renvoyer un decimal et non un long ou un int


    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

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

Discussions similaires

  1. [CompactFramework][C#] Method not found: Floor System.Math
    Par dkmix dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 14/02/2011, 19h24
  2. Ajouter un zero (Math.floor)
    Par arthuro45 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/03/2010, 17h27
  3. Problème avec la fonction floor de <math.h>
    Par moussmouss dans le forum C
    Réponses: 7
    Dernier message: 20/07/2007, 12h41
  4. A propos du composant DBGrid
    Par _Rico_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/07/2002, 09h18
  5. Maths : équations
    Par Anonymous dans le forum Mathématiques
    Réponses: 5
    Dernier message: 02/05/2002, 16h41

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