以下代码为Writeln(Outfile,testreal)提供了一个带有'。'的实数。小数分隔符,即使我在我的Windows系统中定义了','。如何使用Writeln(Outfile,testreal)将数字写入文本文件?
(FloatToStr方法可以提供正确的结果。)
procedure TForm1.Button1Click(Sender: TObject);
var Outfile:textfile;
testreal:single;
StrDummy : string;
begin
testreal:=1234.1234;
assignfile(Outfile,'test_real.txt');
Rewrite(Outfile);
StrDummy:='Decimal Separator in Windows: '+GetLocaleChar(GetThreadLocale, LOCALE_SDECIMAL, '.')+#13#10+
'Decimal Separator in Delphi: '+DecimalSeparator;
Writeln(Outfile,StrDummy);
Writeln(Outfile,testreal);
Writeln(Outfile,FloatToStr(testreal));
Closefile(Outfile);
end;
给出
Decimal Separator in Windows: ,
Decimal Separator in Delphi: ,
1.23412341308594E+0003 //Ps. Why is there a beginning space here?
1234,12341308594
答案 0 :(得分:4)
Legacy Pascal I / O使用Str
将浮点值转换为文本。并且Str
硬编码.
的小数点分隔符。
我建议你使用更现代的I / O形式。例如TStreamWriter
类,它使用FloatToStr
将浮点数转换为文本。