Existe t'il une fonction pour arrondir un float?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Existe t'il une fonction pour arrondir un float?

Message 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
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

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

Message par kernadec »

bonjour microdevweb
facile :D
Resultat.f = Round(Nombre.f, Mode)

Cordialement
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

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

Message 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
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

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

Message par MLD »

Salut
Si c'est pour un affichage

Code : Tout sélectionner

Number.f=10.5689474123
a$ = StrF(Number.f,2)
Debug a$
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

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

Message 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.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

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

Message par kernadec »

bonsoir
là pour le coup :?:
gérer valD() ça va pas être facile 8O

cordialement
Dernière modification par kernadec le lun. 29/déc./2014 12:15, modifié 1 fois.
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

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

Message 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
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

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

Message par kernadec »

bonsoir
Excellent. merci pour le partage
Cordialement
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

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

Message par venom »

Ce code ne te convient pas ?

Code : Tout sélectionner

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







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

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

Message par microdevweb »

Bonsoir venom,

Oui pour un affichage, mais pas pour par exemple un calcul
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

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

Message par venom »

:wink: Ah ok





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

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

Message par Kwai chang caine »

Ca m'aurait été utile certaines fois
Merci pour le partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

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

Message 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
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

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

Message par kernadec »

bonjour
ValD() mériterait bien d'avoir l'option pour le choix du nombre de décimales à utiliser :wink:

Cordialement
Dernière modification par kernadec le lun. 29/déc./2014 12:16, modifié 1 fois.
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

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

Message 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 :?:
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre