以下代码给出了 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
最佳答案
旧版 Pascal I/O 使用 Str
将浮点值转换为文本。 Str
硬编码了 .
.
我建议您使用更现代的 I/O 形式。例如,TStreamWriter
类使用 FloatToStr
将浮点转换为文本。
关于delphi - 文本文件 XE2 中实数的小数分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14254682/