Как я могу разделить значение в Tedit и получить дробную часть ответа в метке, используя FreePascal - PullRequest
0 голосов
/ 13 октября 2019
var
  val1: LongInt;
  val3: LongInt;

procedure TForm1.Button1Click(Sender: TObject);
begin
  val1 := StrToInt(Edit1.Text);
  val3 := (val1 DIV 2);
  Label2.Caption := FloatToStr(val3);
end;

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Вам нужно сделать деление с плавающей точкой вместо целочисленного деления.

var
  val1: LongInt;
  val3: Double;

procedure TForm1.Button1Click(Sender: TObject);
begin
  val1 := StrToInt(Edit1.Text);
  val3 := Double(val1) / 2.0;
  Label2.Caption := FloatToStr(val3);
end;

Или:

var
  val1: Double;
  val3: Double;

procedure TForm1.Button1Click(Sender: TObject);
begin
  val1 := StrToFloat(Edit1.Text);
  val3 := val1 / 2.0;
  Label2.Caption := FloatToStr(val3);
end;
0 голосов
/ 14 октября 2019

Ответ: да, но не так, как вы.

Некоторые предложения для вашего кода:

- не вызывайте что-нибудь val3, если вы не используетеval2 (я полагаю, это было там для всей части деления)

- val3 должен иметь тип "float", чтобы содержать числа с плавающей запятой

- конец секции varточка с запятой ";"

- начать процедуру с новой строки, завершить процедуру с помощью "end" (также на отдельной строке)

- все разделы / операторы (begin..end= составной оператор) заканчивается точкой с запятой

- вы либо хотите сделать целочисленное деление с помощью DIV и MOD, либо деление с плавающей точкой с помощью / (и TRUNC и FRAC -> найдите их)

- вещи между Begin и End имеют отступ (используйте пробелы)

- заканчивайте каждый оператор присваивания (val1: = ...) точкой с запятой

Подумайте пошагово, что это такоеВы действительно хотите сделать.

...