I am having an issue with the StrToFloat routine. I am running Delphi 7 on Windows Vista with the regional format set to German (Austria)
If I run the following code –
DecimalSeparator:='.';
anum:=StrToFloat('50.1123');
edt2.Text:=FloatToStr(anum);
when I convert the string to a float anum becomes 50,1123 and when I convert it back to a sting it becomes ‘50.1123’
How do it so that when I convert the string to a float the number appears with a decimal point rather than a comma as the decimal separator.
thanks
Colin
You have to appreciate the difference between a floating-point number and a textual representation of it (that is, a string of characters).
A floating-point number, as it is normally stored in a computer (e.g. in a Delphi
floatvariable), does not have a decimal separator. Only a textual representation of it does. If the IDE displays theanumas ‘50,1123’ this simply means that the IDE uses your computer’s local regional settings when it creates a textual representation of the number inside the IDE.In your computer’s memory, the value ‘50.1123’ (or, if you prefer, ‘50,1123’), is only stored using ones and zeroes. In hexadecimal notation, the number is stored as
9F AB AD D8 5F 0E 49 40and contains no information about how it should be displayed. It is not like you can grab a magnifying glass and direct it to a RAM module to find a tiny, tiny, string ‘50.1123’ (or ‘50,1123’).Of course, when you want to display the number to the user, you use
FloatToStrwhich takes the number and creates a string of characters out of it. The result can be either ‘50.1123’ or ‘50,1123’, or something else. (In memory, these strings are35 30 2C 31 31 32 33and35 30 2E 31 31 32 33(ASCII), respectively.)