如何将扩展精度浮点值转换为字符串?
因为Delphi RTL没有任何正确和完整的实现
FloatToStr()
功能
Extended
(和
Double
为此,我们需要使用一个外部库
here
最初在
EDN, Codecentral
.
这个库是由JohnHerbster创建的,他是DelphiRTL库的长期贡献者,特别是在浮点处理方面。GitHub源代码已更新为使用Unicode字符串处理和
TFormatSettings
用于格式化的结构。该库包含
ExactFloatToStr()
处理浮动的函数
扩展
,请
双
和
Single
类型。
Program TestExactFloatToStr;
{$APPTYPE CONSOLE}
Uses
SysUtils,ExactFloatToStr_JH0;
begin
WriteLn(ExactFloatToStr(Extended(0.49999999999999999)));
WriteLn(ExactFloatToStr(Double(0.49999999999999999)));
WriteLn(ExactFloatToStr(Single(0.49999999999999999)));
ReadLn;
end.
输出:
0.49999999999999998999823495882122159628124791197478771209716796875
0.5
0.5