如何在 Delphi 中限制给定变量的小数数量

How to limit quantity of fractional numbers of a given variable in Delphi

有谁知道如何格式化 Delphi 中显示的变量小数的数量(在我的程序中,它使用的是变量 Real)。

即:

            3.14159265359

integer value|fractional value   

根据示例,我只希望这个数字显示为 3.14(注意,这只是示例,在我的程序中,用户将输入实际值)。

我期待在标签中显示此值。有什么办法吗?如果是,如何?

参考资料 -> link 来举例说明我想要做什么,但是在 Delphi 中(而不是 Java,这是下面 link 中使用的语言):

How I can to limit decimal numbers of double variable?

您可以使用 Delphi 的内置函数轻松完成此操作:

FloatToStrF();

此函数采用实数值和 returns 带精度点的字符串,在您的示例中为 3.14

代码如下所示:

FloatToStr(ffFixed, 12 ,2);
  1. 首先指定格式化类型,在本例中它将是一个固定值。
  2. 其次,是小数点前的整数值大小。
  3. 第三个参数是小数点后的小数位数。

希望对您有所帮助!

成功实现我期待的代码示例:

Var
    a, b, c: Real;
begin
      a := StrToFloat(txt1.Text);
      b := INT(a);
      c := frac(ABS(a)) + 0.000000000000001;

完整代码示例:

unit Unit10;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TfrmM4E1 = class(TForm)
    btn1: TButton;
    lbl1: TLabel;
    txt1: TEdit;
    lbl2: TLabel;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmM4E1: TfrmM4E1;

implementation

{$R *.dfm}

procedure TfrmM4E1.btn1Click(Sender: TObject);
Var
    a, b, c: Real;
begin
      a := StrToFloat(txt1.Text);
      b := INT(a);
      c := frac(ABS(a)) + 0.000000000000001;
      lbl1.Caption := FloatToStr(b);
      lbl2.Caption := FloatToStr(c);
end;

end.

快速解释:这是一个UI的代码实现,它有一个按钮、一个文本字段(获取小数值)和两个标签,其中一个显示整数部分输入的数字和另一个标签显示输入数字的小数部分。

变量“a”存储插入的值;

变量“b”存储变量“a”的整数值;

变量“c”存储变量“a”的分数值,加上数字校正,因为“c”在显示的最终值中缺少 0.000000000000001。

最后,标签“lbl1”和“lbl2”分别显示变量“b”和“c”的值。