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

Langage Java Discussion :

Convertir String numérique vers float AS/400


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 84
    Points : 58
    Points
    58
    Par défaut Convertir String numérique vers float AS/400
    Hello tous le monde, j'ai un petit souci tres c...
    je recupere une valeur String d'un BD qui correspond à un code barre(donc uniquement des chiffres mais types string dans la BD) je dois integrer cette valeur dans une nouvelle BD AS400 dans une zone qui elle est typee float (je ne peux bien sur intervenir sur le typage des zones, ces bases etant inscritent dans leur logiciel proprietaire). Donc mon souci c'est de caster cette zone string en float sans perte d'information.
    Pour exemple voici ce que me donne un parsefloat sur la valeur "366002598620" (sans la cle) = 366002602000
    j'ai lu la doc et les problemes de conversion

    Merci a vous

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Je ne connais pas grand-chose aux codes-barres ni à AS/400, mais :

    A priori si tu essaies de faire ça, c'est que les floats de BDD AS/400 sont capables de représenter le nombre 366002598620, autrement dit ce ne sont pas des floats standards comme ceux de Java. Si ce n'est pas le cas, c'est pas la peine d'insister, impossible c'est impossible.

    Normalement le modèle de BDD de Java n'oblige pas Java à se caler sur le type stocké en BDD.
    Ce que je veux dire c'est que si tu as un nombre, peu importe que la BDD le stocke comme entier, flottant, décimal ou zorblaxien. Java envoie un nombre, de n'importe quel type, et la BDD le stocke, dans le format de sa colonne.
    Une String n'est pas un nombre, donc en principe tu ne devrais pas envoyer la String telle quelle. Mais un float ça ne va pas : ils ne sont pas assez précis.
    Moi j'utiliserais un long : ça peut contenir n'importe quel entier de 13 chiffres. Donc Long.parseLong()
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Les float sont encodé sour la form X*2Y
    X est la partie significative
    Y est la partie exposant.
    Ce qui fait que tu va forcement perdre en chiffre significatif su tu utilise ce format là.

    Le mieux pour gérer ce genre de cas c'est l'objet BigDecimal ou un long (Si pas de valeur décimal) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    System.out.println(Float.parseFloat("366002598620"));
    System.out.println(Long.parseLong("366002598620"));
    System.out.println(new BigDecimal("366002598620"));
    Citation Envoyé par resultat
    3.66002602E11
    366002598620
    366002598620
    Après, il faut savoir ce que prend ta base de donnée / JDBC en entrée.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 84
    Points : 58
    Points
    58
    Par défaut
    Merci a vous je vais essayer de travailler avec un BigDecimal.

Discussions similaires

  1. convertir string c# vers type oid postgres
    Par lemarin dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 15/12/2009, 11h49
  2. tentative conversion string vers float
    Par firemax dans le forum C
    Réponses: 10
    Dernier message: 21/08/2007, 17h42
  3. convertir String en float
    Par ulysse031 dans le forum Langage
    Réponses: 27
    Dernier message: 02/05/2007, 22h23
  4. [C++] conversion classe string vers float
    Par agrosjea dans le forum C++
    Réponses: 5
    Dernier message: 14/03/2007, 13h45
  5. [C#] Fonction pour convertir string[] vers ArrayList
    Par luimême dans le forum Windows Forms
    Réponses: 6
    Dernier message: 07/04/2005, 13h25

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