salut,
La fonction round de delphi ne marche pas comme je veut :
Elle arrondi au plus proche, si on est juste au milieu, elle arrondi au nombre pair le plus proche (??).
par exemple
round(1.4)=1
round(1.5)=2
round(1.6)=2
round(2.5)=2 (??)
round(2.6)=3
Moi je voudrais arrondir au plus pres, et si on est au milieu, arrondir au dessus
round(2.5)=3
ca fait 1h que je google, mais je trouve rien, ou plutot je trouve des explications tres compliqué qui font intervenir de l'assembleur.
par exemple :
Code :
- type
- TRoundMode = (rmNearest, rmDown, rnUp, rmTruncate);
- { Return the FPU control word }
- function GetControlWord: Word; assembler;
- var
- Ctl: Word;
- asm
- fstcw Ctl
- mov ax, Ctl
- end;
- { Set the FPU control word }
- procedure SetControlWord(Ctl: Word); assembler;
- asm
- fwait
- fldcw Ctl
- end;
- { Set the rounding mode and return the old mode }
- function SetRoundMode(RoundMode: TRoundMode): TRoundMode;
- var
- CtlWord: Word;
- begin
- CtlWord := GetControlWord;
- SetControlWord( (CtlWord and $F3FF) or (Ord(RoundMode) shl 10) );
- Result := TRoundMode((CtlWord shr 10) and 3);
- end;
|
delphi ne comprend pas le fldcw de la fonction setcontrolword,
help !
merci