bhen mon idée d'arrondi vient du source des fonctions de Delphi 6 donc il ne m'appartient pas vraiment :D
enfin je l'ai quand même modifié pcq y avait un bug avec les nombres négatif, et l'arrondi ne se faisait pas exactement comme il fallait le faire avec l'Euro :/
Maldoror
Ben là tu peux utiliser ta fonction pour arrondir au nombre de décimales que tu veux, effectivement dans ce cas ta fonction est très pertinente.
Moi mon cas est très simple : J'ai un montant à 0 décimales en Euros, je veux le convertir en un montant à 0 décimales en dollar.
Je n'ai nul besoin, DANS LE CADRE PRECIS DE CETTE APPLI DE GESTION, de préciser le nombre de décimales, il sera TOUJOURS égal à 0 ;)
Ceci étant dit, avec ta permission, je conserve ton idée d'arrondi dans un coin de mes archives ;)
A+
antp
je crois qu'il y a plus simple et plus propre :/
ex de la fonction que j'ai dû faire pour un programme en Delphi 5 qui avait des problèmes d'arrondis et qui ne voulais pas compiler en Delphi 6 :
Code :
type
TRoundToSERange = -37..37;
function RoundToSE(const AValue: Double; const ADigit: TRoundToSERange = -2): Double;
var
LFactor: Double;
begin
LFactor := IntPower(10, ADigit);
if AValue > 0 then
Result := Trunc((AValue / LFactor) + 0.5) * LFactor
elseif AValue < 0 then
Result := Trunc((AValue / LFactor) - 0.5) * LFactor
else
Result := 0;
end;
(inspiré de la fonction SimpleRoundTo ou RoundTo, je sais plus, de Delphi 6
le second paramètre donne le nombre de chiffres à garder après la virgule.
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Maldoror
Bon ben voilà, j'ai fait comme ça :
Code :
fonction Arrondi(NumeriqueEnChaine : String) : Longint ;
Y avait peut-etre plus simple, mais bon ça marche :D
Maldoror
antp a écrit a écrit :
l'arrondi est logique
c'est l'arrondi "scientifique" et non monétaire.
Si decimale < .5 alors entier inferieur
Sinon si decimale > .5 alors entier superieur
Sinon si entier inferieur pair alors entier inferieur
Sinon entier superieur
c'est expliqué mieux que ça dans l'aide :D
pour ce que tu sembles vouloir, tu dois utiliser la fonction SimpleRoundTo je crois (n'existe que dans Delphi 6)
Merci pour ces explications, pour mon cas personnel je cherche à appliquer l'arrondi comptable et non l'arrondi scientifique, donc je l'ai dans le cul...
Et comme je suis sous Delphi 5 je l'ai une deuxième fois dans le cul :crazy:
Bon ben j'vais m'faire une fonction d'arrondi alors :/
antp
l'arrondi est logique
c'est l'arrondi "scientifique" et non monétaire.
Si decimale < .5 alors entier inferieur
Sinon si decimale > .5 alors entier superieur
Sinon si entier inferieur pair alors entier inferieur
Sinon entier superieur
c'est expliqué mieux que ça dans l'aide :D
pour ce que tu sembles vouloir, tu dois utiliser la fonction SimpleRoundTo je crois (n'existe que dans Delphi 6)
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Maldoror
Non, round n'accepte malheureusement aucun argument.
il arrondi à 0 décimales, mais un peu n'importe comment...
skylight
heu, en delphi, la fonction round accepte un argument je crois (nb de décimales)
tu devrai tenter de mettre cet argument a 0
Maldoror
Salut,
Si je fais un round d'une numérique valant 2.5, j'obtiens 2 et non 3 comme je le souhaiterais et comme ça semblerait logique (en tous cas dans la logique de l'arrondi financier)...
En fait, lorsque Delphi arrondi une valeur se trouvant exactement entre deux entiers, le résultat est toujours le nombre pair, allez donc savoir pourquoi :/
Dois-je me palucher l'arrondi à la mimine ou y-a-t'il un moyen de contourner ce problème afin d'obtenir un nombre arrondi correctement ?