[JAVA] Récuperer la valeur flotante d'un float ?

Récuperer la valeur flotante d'un float ? [JAVA] - Java - Programmation

Marsh Posté le 21-08-2004 à 19:36:27    

Bon, c'est tout bete, mais j'aimerais savoir si il existe une methode simple, car j'ai bien pondu un algo, mais il est trop laid :lol:
 
donc, par exemple, j'ai 58,263 et je veux juste le 263.
 

Code :
  1. int nbint;
  2. float nbfloat,buf2,nombre=58.263;
  3. nbint=(int) nombre;
  4. nbfloat=this.nombre-nbint;
  5. buf2=(int)nbfloat;
  6. while (nbfloat != buf2)
  7. {
  8.    nbfloat*=10.0;
  9.    buf2=(int)nbfloat;
  10. }


   


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 21-08-2004 à 19:36:27   

Reply

Marsh Posté le 21-08-2004 à 19:39:10    

tiens y a pas d'équivalent de modf ?

Reply

Marsh Posté le 21-08-2004 à 19:40:32    

Taz a écrit :

tiens y a pas d'équivalent de modf ?


 
Ben j'aimerais bien le savoir justement :D


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 22-08-2004 à 01:33:09    

koi t pas content de ta soustraction ?


---------------
http://projets.6mablog.com/
Reply

Marsh Posté le 22-08-2004 à 01:35:05    

Lightness1024 a écrit :

koi t pas content de ta soustraction ?

c'est imprécis, et quand bien même ça le serait, et si ton double ne tiens pas dans un int ?
 
 
edit : apparement, la seule manière c'est d'utilisé floor et ensuite de soustraire


Message édité par Taz le 22-08-2004 à 01:39:11
Reply

Marsh Posté le 22-08-2004 à 01:39:35    

ah tiens, pas pensé a ca.


---------------
http://projets.6mablog.com/
Reply

Marsh Posté le 22-08-2004 à 11:56:01    

Bon j'ai une solution bien plus pratique, c'est pour faire une Calculettre     €uro, donc 2 chiffres apres la virgulle, ça me suffit largement :D (j'aurais pu y penser avant)
 

Code :
  1. nbint = (int) nombre;
  2. nbfloat = (int)((nombre-nbint)*100);


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 22-08-2004 à 12:16:49    

c'est idiot, tu fait des conversion en int à tout va qui ne serve à rien (retour au double ensuite) ... bref tu perds de la précision inutilement ...

Reply

Marsh Posté le 22-08-2004 à 12:19:10    

en passant par des String...?

Reply

Marsh Posté le 22-08-2004 à 12:20:31    

c'est pas comme si j'avais déjà proposé une proposition

Reply

Marsh Posté le 22-08-2004 à 12:20:31   

Reply

Marsh Posté le 22-08-2004 à 12:30:39    

Taz a écrit :

c'est idiot, tu fait des conversion en int à tout va qui ne serve à rien (retour au double ensuite) ... bref tu perds de la précision inutilement ...


 
Bon je casterais en long si tu veux :lol:


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 22-08-2004 à 12:40:54    

ahahah utilise .floor et fait une soustraction
 
 
ça n'a rien de marrant, c'est grave cette manie du 'je caste je maîtrise' alors que ton petit exemple montre que tu n'a rien compris au mécanisme de promotion

Reply

Marsh Posté le 22-08-2004 à 12:46:22    

Taz a écrit :

ahahah utilise .floor et fait une soustraction
 
 
ça n'a rien de marrant, c'est grave cette manie du 'je caste je maîtrise' alors que ton petit exemple montre que tu n'a rien compris au mécanisme de promotion


 
J'ai démarré java hier, un peut d'indulgence SVP :lol:
 
Et 11 chiffres apres la virgulle avec mon int, je trouves ça quand meme pas mal, mais bon, 2 ça me suffit :D


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 22-08-2004 à 12:47:35    

là n'est pas la question. t'as qu'aà utiliser des int et c'est tout dans ce cas là ... sinon tu va avoir des suprises

Reply

Marsh Posté le 22-08-2004 à 13:25:18    

Taz a écrit :

là n'est pas la question. t'as qu'aà utiliser des int et c'est tout dans ce cas là ... sinon tu va avoir des suprises


 
Des surprises en quoi ? ça ne fonctionne pas ça ? :  
 
nbfloat= (int)((this.nombre-nbint)*100);


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 22-08-2004 à 13:26:26    

allez, fais une recherche sur l'arithmétique flottant

Reply

Marsh Posté le 22-08-2004 à 13:27:53    

nbfloat = nombre-floor(nombre); ??


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 22-08-2004 à 13:52:02    

KangOl a écrit :

nbfloat = nombre-floor(nombre); ??


 
plutot ça je penses qu'il veut dire, mais je ne comprend pas trop ça pensé.
 
Math.round (((nombre-Math.floor(nombre))*100));
 


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 22-08-2004 à 14:17:08    

un peu de lecture sur les problèmes de précision avec les float & doubles : http://forum.hardware.fr/hardwaref [...] 0339-1.htm


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 22-08-2004 à 15:10:09    

benou a écrit :

un peu de lecture sur les problèmes de précision avec les float & doubles : http://forum.hardware.fr/hardwaref [...] 0339-1.htm


 
Bien ce topic sur les float, faudra que je fasse gaffe quand je vais faire les * et les / de ma calculette ;) mais pour l'instant, il arrive a faire une multiplication par 100 sans se planter :D


Message édité par chaced le 22-08-2004 à 15:10:29

---------------
CPU-Z | Timespy | Mes bd
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed