如何在Delphi中将格式双精度值往返格式化为字符串?
这是我在C#中看到的一个功能...能够将双精度数字格式化为将其反序列化为完全相同的数字。 https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings#RFormatString。
我一直在使用Delphi中的代码格式化它们,但发现它的值有时不相同:
Result:=Format('%e', [d], FMyFormatSettings_FIXED_FORMAT);
我正在使用XML进行序列化。我觉得有必要自己格式化它而不是使用IXMLNode的NodeValue方法,因为我的测试表明NodeValue使用了本地化设置。
答案 0 :(得分:3)
Delphi在浮点数和文本之间进行转换的功能在这方面存在缺陷。实际上,准确地执行此操作实际上非常困难,并且具有可以使浮点值往返的功能。
在我看来,你有两个主要的可能性来解决这个问题:
strtod
和sprintf
。