Float ou double ?

muqaddarmuqaddar Administrateur
18:39 modifié dans API AppKit #1
Pour sauvegarder des prix, en euros ou dollars, soit :

25,36 ¤
32.44 $

Il vaut mieux du double ou du float ?

Le tout à  envoyer ds un field qui sera paramétré dans IB (pour afficher la virgule ou le point selon ne NIB localisé).

Je pense qu'il vaut mieux tout enregistrer en float avec un point. "." Cela posera t-il problème si l'on tape une virgule ds le field ?
Ai-je tort ?

Réponses

  • odjauodjau Membre
    18:39 modifié #2
    dans 1121333603:

    Je pense qu'il vaut mieux tout enregistrer en float avec un point. "." Cela posera t-il problème si l'on tape une virgule ds le field ?


    Je ne vois pas trop en quoi le format (double ou float) peut engendrer ou corriger un problème de séparateur. Je ne comprend pas bien ou est le problème ???
  • muqaddarmuqaddar Administrateur
    18:39 modifié #3
    Le problème, c'est que je tape 36,52 ds mon field, et que je me retrouve après enregistrement à  36,00... (j'ai essayé en float et double)

    Et si je tape 36.52, il me sort 3652,00 à  cause du formatage...
  • fouffouf Membre
    18:39 modifié #4
    Ton problème est, je pense lié à  un NSNumberFormater, mais je suis pas sur. En tous cas, tu devrais essayer en en mettant un sur le TextField ;)
  • muqaddarmuqaddar Administrateur
    18:39 modifié #5
    Si c'est dans IB, il y a déjà  un formatter ! ;)
  • VeillardVeillard Membre
    18:39 modifié #6
    Tu as vérifié si tu as coché "localize" dans "formatter" sous IB ?
  • muqaddarmuqaddar Administrateur
    18:39 modifié #7
    dans 1121361761:

    Tu as vérifié si tu as coché "localize" dans "formatter" sous IB ?


    Oui, il est coché !  ;)
  • muqaddarmuqaddar Administrateur
    juillet 2005 modifié #8
    Bon, j'ai trouvé d'où ça venait.

    Avec le formatter, je récupère le field en string. Du coup, il me renvoie 15,25 au lieu de 15.25 pour stocker... Sauf que je stockais en float après conversion de la string avec floatValue, et là  floatValue me vire les décimales... il voudrait 15.25....

    Il faut donc que je puisse transformer 15,25 en 15.25 par le code... avant mon floatValue, et ça devrait passer... Je suis néanmoins surpris qu'il me renvoie le nombre formatté... et pas la valeur avant formatage.

    EDIT : si je récupère direct en float, ça a l'air bon...  >:)
  • ChachaChacha Membre
    juillet 2005 modifié #9
    dans 1121375898:

    EDIT : si je récupère direct en float, ça a l'air bon...  >:)


    Juste un truc :
    Utilise des double et pas des float. Je te renvoie aux messages suivant celui-ci:
    http://www.objective-cocoa.org/forum/index.php?topic=304.msg3215#msg3215
    Eh, dis donc, je m'en rappelle, c'est mon premier post sur le site !

    +
    Chacha
  • muqaddarmuqaddar Administrateur
    18:39 modifié #10
    dans 1121376398:

    dans 1121375898:

    EDIT : si je récupère direct en float, ça a l'air bon...  >:)


    Juste un truc :
    Utilises des double et pas des float. Je te renvoie aux messages suivant celui-ci:
    http://www.objective-cocoa.org/forum/index.php?topic=304.msg3215#msg3215
    Eh, dis, donc, je m'en rappelle, c'est mon premier post sur le site !

    +
    Chacha


    Ah oui, je me souviens de cette discussion. Je n'aurais jamais de tels nombres à  gérer, mais mieux vaut prendre de bonnes habitudes !
    Merci chacha.
  • Eddy58Eddy58 Membre
    18:39 modifié #11
    dans 1121376398:

    Juste un truc :
    Utilises des double et pas des float. Je te renvoie aux messages suivant celui-ci:
    http://www.objective-cocoa.org/forum/index.php?topic=304.msg3215#msg3215
    Eh, dis, donc, je m'en rappelle, c'est mon premier post sur le site !

    Oui, grâce à  moi en plus ::)
    Vive les doubles en tout cas ! :p ;)
  • VeillardVeillard Membre
    18:39 modifié #12
    Tu as peut-être essayé aussi quelque chose comme ceci :

    dollar = [euroField doubleValue] / taux;
    
  • muqaddarmuqaddar Administrateur
    18:39 modifié #13
    dans 1121409348:

    Tu as peut-être essayé aussi quelque chose comme ceci :

    dollar = [euroField doubleValue] / taux;
    



    Non, il n'y a pas de conversion en code. ;)
Connectez-vous ou Inscrivez-vous pour répondre.