Page 1 sur 3
Existe t'il une fonction pour arrondir un float?
Publié : dim. 28/déc./2014 14:24
par microdevweb
Exemple
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
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
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
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

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

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
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
