Difference between revisions of "DecimalSeparator"
m (→See also: Added FPC ref) |
|||
(One intermediate revision by the same user not shown) | |||
Line 6: | Line 6: | ||
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... | 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 | + | A workaround can be to use a function like: |
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
function DecFloat2Str( const d: double ): string; | function DecFloat2Str( const d: double ): string; | ||
var | var | ||
Line 26: | Line 26: | ||
* [[ThousandSeparator]] | * [[ThousandSeparator]] | ||
* [[ListSeparator]] | * [[ListSeparator]] | ||
+ | * [http://www.freepascal.org/docs-html/rtl/sysutils/decimalseparator.html Documentation on DecimalSeparator] |
Revision as of 07:19, 12 February 2020
│
English (en) │
français (fr) │
DecimalSeparator is a global char variable whose contents is determined by the used locale. It is used for representation of floating point numbers on screen and within functions like StrToFloat() and 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 to use a function like:
function DecFloat2Str( const d: double ): string;
var
myseparator: char;
begin
myseparator := DecimalSeparator;
DecimalSeparator := '.';
Result := FloatToStr( d );
DecimalSeparator := myseparator;
end;
DecimalSeparator is defined in sysinth.inc as:
DecimalSeparator : Char absolute DefaultFormatSettings.DecimalSeparator deprecated;