Strtofloat/Floattostr转换

col*_*lin 1 delphi

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

如果我运行以下代码 -

DecimalSeparator:='.';
anum:=StrToFloat('50.1123');
edt2.Text:=FloatToStr(anum);
Run Code Online (Sandbox Code Playgroud)

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

为什么当我将字符串转换为浮点数时,数字会以小数点而不是逗号作为小数点分隔符出现.

谢谢

科林

And*_*and 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).)