Strtofloat / Floattostr转换

时间:2012-02-18 16:26:58

标签: delphi

我遇到了StrToFloat例程的问题。我在Windows Vista上运行Delphi 7,区域格式设置为德语(奥地利)

如果我运行以下代码 -

DecimalSeparator:='.';
anum:=StrToFloat('50.1123');
edt2.Text:=FloatToStr(anum);

当我将字符串转换为浮点anum变为50,1123时,当我将其转换回sting时,它变为'50 .1123'

当我将字符串转换为浮点数时,数字会以小数点而不是逗号作为小数点分隔符显示。

感谢

科林

1 个答案:

答案 0 :(得分:9)

你必须理解浮点数和它的文本表示(即一串字符)之间的区别。

浮点数通常存储在计算机中(例如,在Delphi float变量中),没有小数分隔符。只有它的文字表示。如果IDE将anum显示为'50,1123',这只表示IDE在IDE中创建数字的文本表示时使用计算机的本地区域设置。

在计算机的内存中,值'50 .1123'(或者,如果您愿意,'50,1123')仅使用1和0存储。在十六进制表示法中,数字存储为9F AB AD D8 5F 0E 49 40,不包含有关如何显示的信息。这并不像你可以拿一个放大镜并将它指向一个RAM模块来找到一个微小的字符串'50 .1123'(或'50,1123')。

当然,当您想要向用户显示该号码时,您可以使用FloatToStr来获取该号码并从中创建一串字符。结果可以是'50 .1123'或'50,1123',或其他。 (在内存中,这些字符串分别为35 30 2C 31 31 32 3335 30 2E 31 31 32 33(ASCII)。)