下面的代碼給出了一個帶有'。'的Writeln(Outfile,testreal)的實數。小數點分隔符,即使我在我的Windows系統中定義了','。我如何使用Writeln(Outfile,testreal)將一個數字寫入文本文件?文本文件中實數的小數分隔符XE2
(該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
如果您需要重新讀取文本文件,請小心。有效實數可能無法在具有不同小數點分隔符的不同局部正確解釋。 – Shannon
該空間是爲符號保留的。根據您要存儲的文本文件的類型,您可能希望以與區域設置無關的標準方式存儲小數值。這樣可以在任何語言環境中讀取這些值。 –
如果您正在將浮點值寫入XML文檔,則標準十進制字符是'.'。 Delphi中的TXMLDocument可能不會尊重這個事實,請參閱[將十進制值寫入XML](https://forums.embarcadero.com/thread.jspa?threadID=78425)。 –