Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.10.2011, 21:42
larexxx larexxx вне форума
Прохожий
 
Регистрация: 02.10.2011
Сообщения: 7
Репутация: 10
Лампочка Помогите округлить результат

Помогите пожалуйста округлить результат до целого.
Вкратце о программке: есть формула расчета, три поля для ввода данных (Edit), при нажатии на кнопку(Button) выводится результат в поле Panel.
Код:
unit Zn;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    edt1: TEdit;
    edt2: TEdit;
    pnl1: TPanel;
    btn1: TButton;
    edt3: TEdit;
    lbl2: TLabel;
    lbl1: TLabel;
    lbl3: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var a:string;
begin
a:=FloatToStr((((StrToFloat(Edt1.Text)-StrToFloat(Edt2.Text))*StrToFloat(Edt3.Text)*65.4)/63.5)*1.28);
pnl1.Caption:=a;
end;

end.
Админ: Пользуемся тегами для оформления кода!

http://saveimg.ru/show-image.php?id=...42687571639560

Последний раз редактировалось Admin, 02.10.2011 в 21:47.
Ответить с цитированием
  #2  
Старый 02.10.2011, 21:43
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Функция Round округляет дробное до целого.
Код:
 k:=Round(a);
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 02.10.2011, 21:53
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Дополню
http://www.delphisources.ru/pages/fa...Round.php.html
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #4  
Старый 02.10.2011, 21:53
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Или в зависимости от требуемого:
Код:
 k:=Trunc(a);
отсечь дробную часть. Но справку никто не отменял, жмём F1 и...
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 02.10.2011 в 21:56.
Ответить с цитированием
  #5  
Старый 02.10.2011, 22:02
larexxx larexxx вне форума
Прохожий
 
Регистрация: 02.10.2011
Сообщения: 7
Репутация: 10
По умолчанию

Извиняюсь за незнание матчасти, но я не могу никак примень данную функцию. что делать с переменной 'К'?
Ответить с цитированием
  #6  
Старый 02.10.2011, 22:18
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Присвоить к pnl1.Caption, а лучше, возьми всё своё выражение в круглые скобки и перед ними напиши Round, Trunc или, что там требуется.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 02.10.2011, 22:47
larexxx larexxx вне форума
Прохожий
 
Регистрация: 02.10.2011
Сообщения: 7
Репутация: 10
По умолчанию

Уже по всякому пробовал........может кто посмотрит в чем ошибка...вот файл проекта
http://narod.ru/disk/27078238001/1.rar.html
целый день уже потерял........
Ответить с цитированием
  #8  
Старый 02.10.2011, 23:01
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Так:
Код:
procedure TForm1.btn1Click(Sender: TObject);
begin
  pnl1.Caption := IntToStr(Round((((StrToFloat(Edt1.Text) - StrToFloat(Edt2.Text)) * StrToFloat(Edt3.Text) * 65.4) / 63.5) * 1.28));
end;
только возможна ошибка, если вместо запятой поставить точку в Edit-е. Нужно проверять ввод символов в Edit и, если точка менять на запятую.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #9  
Старый 02.10.2011, 23:03
larexxx larexxx вне форума
Прохожий
 
Регистрация: 02.10.2011
Сообщения: 7
Репутация: 10
По умолчанию

ОГРОМНОЕ СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!
Ответить с цитированием
  #10  
Старый 03.10.2011, 10:27
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию

между прочим это не все.
есть еще функции
Код:
Ceil-округл в сторону увеличения
Floor-в сторону уменьшения
Trunc-в сторону нуля (те отбрасывает дробную часть)
Round-до ближайшего целого
Загляни в справку. Модуль Math- там полно всякой
очень полезной всячины.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:55.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025