Page 1 sur 3

Existe t'il une fonction pour arrondir un float?

Publié : dim. 28/déc./2014 14:24
par microdevweb
Exemple

Code : Tout sélectionner

Number.f=10.5689474123
je voudrais obtenir 10.57
j'ai essayé une combinaison de de ValF(StrF(Number,2)) et ValD(StrF(Number,2)) mais cela ne fonctionne pas

Merci

Re: Existe t'il une fonction pour arrondir un float?

Publié : dim. 28/déc./2014 15:30
par kernadec
bonjour microdevweb
facile :D
Resultat.f = Round(Nombre.f, Mode)

Cordialement

Re: Existe t'il une fonction pour arrondir un float?

Publié : dim. 28/déc./2014 16:03
par microdevweb
Bonjour kernadec,

Mais malheureusement comme je le pensais, Round renvoie un entier

Code : Tout sélectionner

t.f=10.5896523
r.f=Round(t,#PB_Round_Nearest)
Debug r ;Renvoie 11.0

Re: Existe t'il une fonction pour arrondir un float?

Publié : dim. 28/déc./2014 16:49
par MLD
Salut
Si c'est pour un affichage

Code : Tout sélectionner

Number.f=10.5689474123
a$ = StrF(Number.f,2)
Debug a$

Re: Existe t'il une fonction pour arrondir un float?

Publié : dim. 28/déc./2014 18:03
par microdevweb
Bonsoir MLD,

Non c'est pour une valeur calculée

J'ai essayé déjà

Code : Tout sélectionner

t.f=10.5896523
r.f=ValF(StrF(t,2))
Debug r ;retourne 10.59000015258789
Il va falloir que code une petite procédure.

Re: Existe t'il une fonction pour arrondir un float?

Publié : dim. 28/déc./2014 18:13
par kernadec
bonsoir
là pour le coup :?:
gérer valD() ça va pas être facile 8O

cordialement

Re: Existe t'il une fonction pour arrondir un float?

Publié : dim. 28/déc./2014 18:47
par microdevweb
Bon voila j'ai créer une petite procédure à cette effet, du bricolage mais cela a l'air de fonctionner. La procédure renvoie un Double car avec un float cela ne fonctionne pas

Code : Tout sélectionner

t.f=10.5896523
Procedure.D RoundFloat(Value.f,pLen)
      Protected NI,NF,Div=1,N
      NI=Int(Value)
      NF=Val(Right(StrF(Value,pLen),pLen))
      For N=1 To pLen
            Div=Div*10
      Next
      ProcedureReturn NI+(NF/Div)
EndProcedure
Debug RoundFloat(t,1) ;Retourne 10,6
Debug RoundFloat(t,2) ;Retourne 10,59
Debug RoundFloat(t,3) ;Retourne 10,59

Re: Existe t'il une fonction pour arrondir un float?

Publié : dim. 28/déc./2014 19:18
par kernadec
bonsoir
Excellent. merci pour le partage
Cordialement

Re: Existe t'il une fonction pour arrondir un float?

Publié : dim. 28/déc./2014 22:14
par venom
Ce code ne te convient pas ?

Code : Tout sélectionner

Number.f=10.5896523
Debug StrF(Number, 1)
Debug StrF(Number, 2)







@++

Re: Existe t'il une fonction pour arrondir un float?

Publié : lun. 29/déc./2014 0:30
par microdevweb
Bonsoir venom,

Oui pour un affichage, mais pas pour par exemple un calcul

Re: Existe t'il une fonction pour arrondir un float?

Publié : lun. 29/déc./2014 2:33
par venom
:wink: Ah ok





@++

Re: Existe t'il une fonction pour arrondir un float?

Publié : lun. 29/déc./2014 8:54
par Kwai chang caine
Ca m'aurait été utile certaines fois
Merci pour le partage 8)

Re: Existe t'il une fonction pour arrondir un float?

Publié : lun. 29/déc./2014 9:39
par MLD
Bonjour microdevweb

regarde si cela ne te pose pas de problème ?

Code : Tout sélectionner

;t.f=10.5896523
t.f=10.5496523
Procedure.D RoundFloat(Value.f,pLen)
      Protected NI,NF,Div=1,N
      NI=Int(Value)
      NF=Val(Right(StrF(Value,pLen),pLen))
      For N=1 To pLen
            Div=Div*10
      Next
      ProcedureReturn NI+(NF/Div)
EndProcedure
Debug RoundFloat(t,1) ;Retourne 10,5
Debug RoundFloat(t,2) ;Retourne 10,5500000000001
Debug RoundFloat(t,3) ;Retourne 10,5500000000001

Re: Existe t'il une fonction pour arrondir un float?

Publié : lun. 29/déc./2014 10:18
par kernadec
bonjour
ValD() mériterait bien d'avoir l'option pour le choix du nombre de décimales à utiliser :wink:

Cordialement

Re: Existe t'il une fonction pour arrondir un float?

Publié : lun. 29/déc./2014 10:56
par microdevweb
Oui je suis d'accord avec toi Kernadec ce serait intéressant.

Merci MDL, on dirait que ma procédur eà la vas vite n'est trop au point :?: