« SQLRound (rtl) » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
<source lang='delphi'>Function SQLRound(D:Double; len:Integer):Double;</source> | <source lang='delphi'>Function SQLRound(D:Double; len:Integer):Double;</source> | ||
Cette fonction arrondie un nombre flottant suivant la même syntaxe que la fonction SQL ROUND. | |||
{|class="wikitable" | {|class="wikitable" | ||
|- | |- | ||
|Result | |Result | ||
| | |Valeur arrondie. | ||
|- | |- | ||
|D | |D | ||
| | |Valeur à arrondir | ||
|- | |- | ||
|len | |len | ||
| | |Spécificateur de longueur. | ||
|} | |} | ||
Exemple | Exemple | ||
'''Implémentation de SQLRound''' | |||
<source lang='delphi'> | <source lang='delphi'> | ||
function SQLRound(f:double; len:Integer):double; | |||
const fac:Array[0..8] of Extended = (1,10,100,1000,10000,100000,1000000,10000000,100000000); | |||
begin | begin | ||
//ROUND(748.58,-4)= 0 | |||
//ROUND(748.58,-1)= 750.00 | |||
//ROUND(748.58,-2)= 700.00 | |||
//ROUND(748.58,-3)= 1000.00 | |||
//ROUND(123.9994,3)= 123.9990 | |||
//ROUND(123.9995,3)= 124.0000 | |||
// | |||
if (len>=0) then | |||
begin | |||
if len>8 then len := 8; | |||
Result := Round(f*fac[len])/fac[len]; | |||
end | |||
else | |||
begin | |||
len := -1*len; | |||
if len>8 then len := 8; | |||
Result := Round(f/fac[len])*fac[len]; | |||
end; | |||
end; | end; | ||
</source> | </source> |
Dernière version du 11 août 2009 à 15:18
<source lang='delphi'>Function SQLRound(D:Double; len:Integer):Double;</source>
Cette fonction arrondie un nombre flottant suivant la même syntaxe que la fonction SQL ROUND.
Result | Valeur arrondie. |
D | Valeur à arrondir |
len | Spécificateur de longueur. |
Exemple
Implémentation de SQLRound <source lang='delphi'> function SQLRound(f:double; len:Integer):double; const fac:Array[0..8] of Extended = (1,10,100,1000,10000,100000,1000000,10000000,100000000); begin
//ROUND(748.58,-4)= 0 //ROUND(748.58,-1)= 750.00 //ROUND(748.58,-2)= 700.00 //ROUND(748.58,-3)= 1000.00 //ROUND(123.9994,3)= 123.9990 //ROUND(123.9995,3)= 124.0000 // if (len>=0) then begin if len>8 then len := 8; Result := Round(f*fac[len])/fac[len]; end else begin len := -1*len; if len>8 then len := 8; Result := Round(f/fac[len])*fac[len]; end;
end; </source>
Voir aussi:
{{#if:Développement DSM|
{{#if:Développement DSM|— Développement DSM |}} — Développement DSM —
|
{{#if:|— [[{{{1}}}]] |}} — Développement DSM —
}}