Difference between revisions of "DecimalSeparator/fr"

From Free Pascal wiki
Jump to navigationJump to search
(Created page with " {{DecimalSeparator}} '''DecimalSeparator''' est une variable char globale dont le contenu est déterminé par la locale utilisée. Elle es...")
 
Line 1: Line 1:
 
 
{{DecimalSeparator}}
 
{{DecimalSeparator}}
  
'''DecimalSeparator''' est une [[Global variables|variable char globale]] dont le contenu est déterminé par la [[locale/fr|locale]] utilisée. Elle est utilisée pour la représentation des nombres flottants sous forme de chaîne de caractères dans les fonctions StrToFloat() et FloatToStr().
+
'''DecimalSeparator''' (séparateur décimal) est une [[Global variables|variable char globale]] dont le contenu est déterminé par la [[locale/fr|locale]] utilisée. Elle est utilisée pour la représentation des nombres flottants sous forme de chaîne de caractères dans les fonctions StrToFloat() et FloatToStr().
 
 
 
 
As long as every instance of a program uses the same decimal separator everything will behave as expected. However, if one instance of a program has its locale set to Dutch (nl_NL), writes a file containing some floating point numbers which is read by another instance of the same program with a locale set to US-English (en_US) you run into trouble because a formatted number like 123,456 will generate a conversion exception...
 
  
A workaround can be use of a function like:
+
Aussi longtemps que toutes les instances d'un programme utilise le même séparateur décimal, tout se passera comme prévu. Toutefois, si l'une des instances du programme est basée sur la locale holllandaise (nl_NL) et écrit un fichier contenant des nombres flottants formatés et qu'une autre instance lit ces données avec une locale anglaise US (en_US), vous allez avoir un problème car un nombre formaté comme 123,456 va provoqué une exception de conversion... (la virgule n'est pas le séparateur décimal de cette locale.)
  
 +
Un palliatif pouvant être utilisé :
 
<syntaxhighlight>
 
<syntaxhighlight>
 
function DecFloat2Str( const d: double ): string;
 
function DecFloat2Str( const d: double ): string;
Line 21: Line 18:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
DecimalSeparator is defined in sysinth.inc as:
+
DecimalSeparator est défini dans sysinth.inc comme:
 
   DecimalSeparator : Char absolute DefaultFormatSettings.DecimalSeparator deprecated;
 
   DecimalSeparator : Char absolute DefaultFormatSettings.DecimalSeparator deprecated;
  
== See also ==
+
NB : cette variable est marquée obsolète, il faut employer DefaultFormatSettings.DecimalSeparator à la place.
* [[ThousandSeparator]]
+
 
* [[ListSeparator]]
+
== Voir aussi ==
 +
* [[ThousandSeparator/fr]]
 +
* [[ListSeparator/fr]]
 +
* [http://www.freepascal.org/docs-html/rtl/sysutils/decimalseparator.html Documentation sur DecimalSeparator]

Revision as of 08:51, 9 November 2016

English (en) français (fr)

DecimalSeparator (séparateur décimal) est une variable char globale dont le contenu est déterminé par la locale utilisée. Elle est utilisée pour la représentation des nombres flottants sous forme de chaîne de caractères dans les fonctions StrToFloat() et FloatToStr().

Aussi longtemps que toutes les instances d'un programme utilise le même séparateur décimal, tout se passera comme prévu. Toutefois, si l'une des instances du programme est basée sur la locale holllandaise (nl_NL) et écrit un fichier contenant des nombres flottants formatés et qu'une autre instance lit ces données avec une locale anglaise US (en_US), vous allez avoir un problème car un nombre formaté comme 123,456 va provoqué une exception de conversion... (la virgule n'est pas le séparateur décimal de cette locale.)

Un palliatif pouvant être utilisé :

function DecFloat2Str( const d: double ): string;
var
   myseparator: char;
begin
  myseparator := DecimalSeparator;
  DecimalSeparator := '.';
  Result := FloatToStr( d );
  DecimalSeparator := myseparator;
end;

DecimalSeparator est défini dans sysinth.inc comme:

 DecimalSeparator : Char absolute DefaultFormatSettings.DecimalSeparator deprecated;

NB : cette variable est marquée obsolète, il faut employer DefaultFormatSettings.DecimalSeparator à la place.

Voir aussi