java
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

java



  1. #1
    invitedb052e48

    java


    ------

    Bonjour
    svp besoin d'aide
    je veux convertir "7,33" à un double mais je peux pas utiliser Double.parse.. à cause de la virgule alors qu'est ce que je peux faire?

    cordialment

    -----

  2. #2
    pm42

    Re : java

    Tu utilises la classe NumberFormat avec
    NumberFormat.getNumberInstance (Locale.FRENCH)
    Cela va te donner une instance qui a une méthode parse et celle-ci supportera le format français.

  3. #3
    Ikhar84
    Animateur Informatique

    Re : java

    Salut,

    Tu as un code à présenter ?

    Essaies un truc du genre (sans garantie !) :
    Code:
    double nombre=0;
    string chaine = "7,33";
    NumberFormatInfo nf= new NumberFormatInfo(); nf.NumberDecimalSeparator = ",";
    
    bool result = double.TryParse(chaine, NumberStyles.Number, nf, out nombre);
    Mais ce serait plus propre avec un CultureInfo... (je te laisse chercher)...
    Il y a aussi moyen (crade) avec un Replace... (je te laisse chercher aussi...).
    J'ai glissé Chef !

  4. #4
    pm42

    Re : java

    Citation Envoyé par Ikhar84 Voir le message
    Mais ce serait plus propre avec un CultureInfo... (je te laisse chercher)...
    Ce ne serait pas du .NET plutôt ?

  5. A voir en vidéo sur Futura
  6. #5
    Ikhar84
    Animateur Informatique

    Re : java

    C'est bien possible que je me sois embrouillé... je fais plus de Java depuis des années, essentiellement du c#...
    J'ai glissé Chef !

  7. #6
    invite6486d7bd

    Re : java

    Peut-être comme ça :

    Code:
      doublle re;
      String s;
      String[] ss;
    
      s ="7,33";
      ss = split(s, ",");
    
      re = int(ss[0]);  // Donne 7
    
      re = re + int(ss[1]) / (pow(10, ss[1].length())); // Donne 7.330000013113022

  8. #7
    albanxiii
    Modérateur

    Re : java

    Citation Envoyé par LeMulet Voir le message
    Peut-être comme ça :

    Code:
    ...
    Ça c'est le moyen crade dont parle Ikhar84. A éviter donc.
    Not only is it not right, it's not even wrong!

  9. #8
    pm42

    Re : java

    Citation Envoyé par albanxiii Voir le message
    Ça c'est le moyen crade dont parle Ikhar84. A éviter donc.
    En effet et c'est pire que crade, c'est faux. Cela fait une erreur si on parse un nombre sans partie décimale, cela accepte 7.-33, ne supporte pas la notation scientifique...
    Et si par hasard on lui passe un nombre en notation américaine comme "7,333.5", cela va le résoudre en 7 + 0,333 sans erreur.

    Si c'est pour faire quelque chose qui ne parse que 1 seul cas, celui donné en exemple, on n'a pas besoin de faire un programme.

  10. #9
    invite6486d7bd

    Re : java

    Citation Envoyé par pm42 Voir le message
    En effet et c'est pire que crade, c'est faux. Cela fait une erreur si on parse un nombre sans partie décimale, cela accepte 7.-33, ne supporte pas la notation scientifique...
    Et si par hasard on lui passe un nombre en notation américaine comme "7,333.5", cela va le résoudre en 7 + 0,333 sans erreur.
    C'est évident...
    Mais ça se gère sans problème.
    A savoir si c'est crade ou pas... faut s'adapter au langage.

    Le java, c'est crade de base.

    Si c'est pour faire quelque chose qui ne parse que 1 seul cas, celui donné en exemple, on n'a pas besoin de faire un programme.
    Mais non voyons ! Il ne parse pas un seul exemple, vous pouvez par exemple parser "1,33333" ou "8,7".
    Essayez déjà de comprendre ce petit bout de code, il n'est pas compliqué.

  11. #10
    invite6486d7bd

    Re : java

    Citation Envoyé par wildo Voir le message
    je veux convertir "7,33" à un double mais je peux pas utiliser Double.parse.. à cause de la virgule alors qu'est ce que je peux faire?
    Pour répondre simplement, transformer la virgule de la chaine en point, ensuite vous pourrez employer le Double.parseDouble("7.33");

    Voir par exemple ici :

    String replace(char ac, char nc) Retourne une chaîne ou tous les ac ont été remplacé par des nc. S’il n’y a pas de remplacement, la chaîne elle-même est retournée.
    http://imss-www.upmf-grenoble.fr/pre...aracteres.html

  12. #11
    Ikhar84
    Animateur Informatique

    Re : java

    Le dev est un véritable art.

    Les données d'entrées, sûrement saisies par l'utilisateur sur une GUI, doivent être assainies AVANT tout traitement, et quelque soit le problème, une solution doit y être trouvée, au pire, via le mécanisme des exceptions.

    Ici, un utilisateur saisira une valeur, non prévisible, sous la forme d'une chaine de caractère. La traitement attend un double.
    L'utilisateur peut donc saisir n'importe quelle chaine, "aaazee", "7,33" ou "7.33", voir même "7;33".

    Il faut traiter TOUS ces cas.

    La difficulté supplémentaire est que la langue de l'OS (et donc le format décimal) n'est pas connu au moment du codage.

    Suivant la "Culture" de l'OS, le séparateur décimal peut être un . (point) ou une , (virgule). Voir même selon le système, Java ayant vocation à être portable.

    C'est pour cela que les manipulations de chaines à base de concatenation ou de Replace sont à proscrire. Dès le début de l'apprentissange, lors des "transtypage" de valeur textuelle en nombre.

    En tout cas avec les langages qui nous en donnent les moyens.
    J'ai glissé Chef !

  13. #12
    pm42

    Re : java

    Citation Envoyé par Ikhar84 Voir le message
    C'est pour cela que les manipulations de chaines à base de concatenation ou de Replace sont à proscrire. Dès le début de l'apprentissange, lors des "transtypage" de valeur textuelle en nombre.
    Bien sur. Et surtout il y a des librairies qui font tout ça très bien (voir mon 1er post).
    Réinventer la roue en version carrée qui explose tous les 2m, par exemple en remplaçant la virgule par un point ne marche pas non plus. Comme déjà dit, on va à un moment récupérer des nombres avec des virgules comme séparateur des milliers...

    Le format des nombres, des dates, des devises et plein d'autres choses sont des sujets complexes à cause de nombreuses variations régionales. C'est pour cela qu'il y a des librairies qui couvrent tous les cas.

    Mais bon, on est en train de nourrir le troll à dire des évidences à quelqu'un qui va nous répéter que sa roue carrée à lui freine mieux

  14. #13
    invite6486d7bd

    Re : java

    Citation Envoyé par Ikhar84 Voir le message
    Le dev est un véritable art.

    Les données d'entrées, sûrement saisies par l'utilisateur sur une GUI, doivent être assainies AVANT tout traitement, et quelque soit le problème, une solution doit y être trouvée, au pire, via le mécanisme des exceptions.

    Ici, un utilisateur saisira une valeur, non prévisible, sous la forme d'une chaine de caractère. La traitement attend un double.
    L'utilisateur peut donc saisir n'importe quelle chaine, "aaazee", "7,33" ou "7.33", voir même "7;33".

    Il faut traiter TOUS ces cas.

    La difficulté supplémentaire est que la langue de l'OS (et donc le format décimal) n'est pas connu au moment du codage.

    Suivant la "Culture" de l'OS, le séparateur décimal peut être un . (point) ou une , (virgule). Voir même selon le système, Java ayant vocation à être portable.

    C'est pour cela que les manipulations de chaines à base de concatenation ou de Replace sont à proscrire. Dès le début de l'apprentissange, lors des "transtypage" de valeur textuelle en nombre.

    En tout cas avec les langages qui nous en donnent les moyens.
    On sait tout ça...
    Mais ce n'est pas la question.

    Savoir répondre à une question est aussi un art.

    Ici, la question c'est : Comment convertir un numérique (double) une chaine qui ne peut pas l'être par la fonction connue parse.Double() A CAUSE DE LA VIRGULE.

    La réponse est simple et pour éviter de réinventer la roue... on utilise la fonction parse.Double()

    Citation Envoyé par pm42
    Mais bon, on est en train de nourrir le troll à dire des évidences à quelqu'un qui va nous répéter que sa roue carrée à lui freine mieux
    Et le mec qui ne se prend pas pour un Troll, il peut fournir une réponse applicable ?

  15. #14
    invite44510b00

    Re : java

    Citation Envoyé par LeMulet Voir le message
    Savoir répondre à une question est aussi un art.
    Vous devriez la recopier 1000 fois ....
    Je vais vous faciliter le travail :

    Code:
    print 'Savoir répondre à une question est aussi un art. ';
    GO 1000

Discussions similaires

  1. java qui fait la java
    Par vanos dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 14/10/2014, 16h31
  2. [Java] Installation Java
    Par invite6518ba45 dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 05/06/2014, 20h00
  3. Java
    Par invite6518ba45 dans le forum Logiciel - Software - Open Source
    Réponses: 13
    Dernier message: 04/06/2014, 17h25
  4. java
    Par Havana7 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 3
    Dernier message: 21/02/2013, 21h57
  5. Java, java, java, where are you, there's a mission for you !
    Par invite1237a629 dans le forum Logiciel - Software - Open Source
    Réponses: 35
    Dernier message: 16/03/2008, 22h10