3

单位System.Math定义常数

MinExtended80Denormal

我可以使用给定的 rtl 函数将此数字转换为字符串吗?

我试过

FormatFloat('#.##############E+####', System.math.MinExtended80Denormal)

这导致

000000000000000E+00000

我也尝试了更大的非规范化值,但似乎内置格式化函数不支持这些值(其中指数为零)。

4

1 回答 1

4

使用系统内置的打印功能,它可以工作:

uses
  Math;
var
  s:String;
begin
  Str(MinExtended80Denormal,s);
  WriteLn(s);
  WriteLn(MinExtended80Denormal);
  Str(MinExtended80Denormal:26:-1,s);
  WriteLn(s);
  WriteLn(MinExtended80Denormal:26:-1);
end.

输出:

3.64519953188247E-4951
3.64519953188247E-4951
3.64519953188247460E-4951
3.64519953188247460E-4951

常数 MinExtended80Denormal 定义为: 3.64519953188247460253e-4951 所以最好的结果是给出除最后三位小数之外的所有数字。


我也试过WriteLn(MinExtended80Denormal.ToString),但给了0

于 2018-03-27T22:59:29.683 回答