String en float dans java
Résolu
Titelouve
Messages postés
28
Statut
Membre
-
Titelouve Messages postés 28 Statut Membre -
Titelouve Messages postés 28 Statut Membre -
Bonjour,
Je m'acharne tant bien que mal sur un programme en java, mais une spécialité est apparue qui me laisse dubitative...
Voilà la partie de code où je transforme un morceau de String en float (je l'ai truffée de System.out.println pour être sûre de la justesse du résultat):
Et voilà le résultat sur la console:
<lastVisitedDate>300129019.5</lastVisitedDate>
300129019.5
3.00129024E8
Je n'arrive pas à comprendre pourquoi le nombre est modifié quand je le transforme en float!!!
Si vous pouviez éclairer ma lanterne, ou peut-être me conseiller une autre démarche (je le transforme ensuite en long pour en faire une date).
En fait il s'agit d'une date iPhone que je veux formatter en qqch de plus... intuitif!
Merci d'avance et bonne soirée
Je m'acharne tant bien que mal sur un programme en java, mais une spécialité est apparue qui me laisse dubitative...
Voilà la partie de code où je transforme un morceau de String en float (je l'ai truffée de System.out.println pour être sûre de la justesse du résultat):
System.out.println(lignesFinales[i]);
System.out.println(lignesFinales[i].substring(lignesFinales[i].indexOf("<lastVisitedDate>")+17, lignesFinales[i].indexOf("</")));
float f = Float.parseFloat(lignesFinales[i].substring(lignesFinales[i].indexOf("<lastVisitedDate>")+17, lignesFinales[i].indexOf("</")));
System.out.println(f);
Et voilà le résultat sur la console:
<lastVisitedDate>300129019.5</lastVisitedDate>
300129019.5
3.00129024E8
Je n'arrive pas à comprendre pourquoi le nombre est modifié quand je le transforme en float!!!
Si vous pouviez éclairer ma lanterne, ou peut-être me conseiller une autre démarche (je le transforme ensuite en long pour en faire une date).
En fait il s'agit d'une date iPhone que je veux formatter en qqch de plus... intuitif!
Merci d'avance et bonne soirée
A voir également:
- String en float dans java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
4 réponses
Il semblerait que ce soit un timestamp UNIX, soit les secondes depuis le 1er janvier 1970. En fait c'est pas exactement ça, après faut encore adapter pour arriver à la date réelle (ajouter 31 ans, et 1 jour supplémentaire par année bissextile depuis l'année 2008 compris). C'est un peu du bricolage, et j'espère que mes sources sont fiables sinon ce que je fais ne sert à rien. Vive les formats mac!!!
Si jamais, je suis consciente que je dois multiplier mon nombre par 1000 pour arriver à des millisecondes et être compatibles avec la date java.
A première vue la suite de mon programme fonctionne bien. C'est juste ce changement de valeur qui m'embête.
Si jamais, je suis consciente que je dois multiplier mon nombre par 1000 pour arriver à des millisecondes et être compatibles avec la date java.
A première vue la suite de mon programme fonctionne bien. C'est juste ce changement de valeur qui m'embête.
Salut,
utilise plutôt un double...tu gagnes en precision...
String m="<lastVisitedDate>300129019.5</lastVisitedDate>";
Double d=Double.parseDouble(m.substring(m.indexOf("<lastVisitedDate>")+17, m.indexOf("</")));
float f =Float.parseFloat(m.substring(m.indexOf("<lastVisitedDate>")+17, m.indexOf("</")));
System.out.print(m+"\n"+d+"\n"+f+"\n" );
resultat:
<lastVisitedDate>300129019.5</lastVisitedDate>
3.001290195E8
3.00129024E8
@+
utilise plutôt un double...tu gagnes en precision...
String m="<lastVisitedDate>300129019.5</lastVisitedDate>";
Double d=Double.parseDouble(m.substring(m.indexOf("<lastVisitedDate>")+17, m.indexOf("</")));
float f =Float.parseFloat(m.substring(m.indexOf("<lastVisitedDate>")+17, m.indexOf("</")));
System.out.print(m+"\n"+d+"\n"+f+"\n" );
resultat:
<lastVisitedDate>300129019.5</lastVisitedDate>
3.001290195E8
3.00129024E8
@+