Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2011, 13:13   #1
egor088
Пользователь
 
Регистрация: 30.01.2011
Сообщений: 15
По умолчанию Как в программе отсеч лишние знаки после запятой?

Как в программе отсеч лишние знаки после запятой?

Вот часть кода:
Код:
 a:=StrToFloat(Edit1.Text);
 b:=StrToFloat(Edit2.Text);
 c:=b/0.7;
 d:=a/30;
 e:=c-d;
 f:=e*4.6;
 i:=d*5.5;
 s:=f+i;
 Edit3.Text:=FloatToStrF(s,ffFixed,4,1);

В значениях с и d отсеч до десятых.

Последний раз редактировалось Stilet; 03.02.2011 в 07:11.
egor088 вне форума Ответить с цитированием
Старый 30.01.2011, 13:27   #2
InternetStranger
php / delphi
Форумчанин
 
Аватар для InternetStranger
 
Регистрация: 10.06.2007
Сообщений: 175
По умолчанию

Первое, что пришло на ум.
Код:
C := Round(C*10) / 10; // Округляет до десятых
D := Trunc(D*10) / 10; // Отсекает все после десятых
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.
InternetStranger вне форума Ответить с цитированием
Старый 30.01.2011, 13:34   #3
egor088
Пользователь
 
Регистрация: 30.01.2011
Сообщений: 15
По умолчанию

Цитата:
Сообщение от InternetStranger Посмотреть сообщение
Первое, что пришло на ум.
Код:
C := Round(C*10) / 10; // Округляет до десятых
D := Trunc(D*10) / 10; // Отсекает все после десятых
Спасибо.Только не надо округлять.
А до сотых?

Последний раз редактировалось egor088; 30.01.2011 в 13:36.
egor088 вне форума Ответить с цитированием
Старый 30.01.2011, 13:54   #4
InternetStranger
php / delphi
Форумчанин
 
Аватар для InternetStranger
 
Регистрация: 10.06.2007
Сообщений: 175
По умолчанию

До сотых - 100 вместо 10.
До тысячных - 1000 вместо 10.
Закономерность улавливаете?
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.
InternetStranger вне форума Ответить с цитированием
Старый 30.01.2011, 13:57   #5
egor088
Пользователь
 
Регистрация: 30.01.2011
Сообщений: 15
По умолчанию

Цитата:
Сообщение от InternetStranger Посмотреть сообщение
До сотых - 100 вместо 10.
До тысячных - 1000 вместо 10.
Закономерность улавливаете?
Большое спасибо.
Все работает.
egor088 вне форума Ответить с цитированием
Старый 30.01.2011, 17:05   #6
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

"Ну вы, блин, даете..."
Есть же функция форматирования :
Код:
Label1.Caption:=FormatFloat('0.00', 12.34567);
asmodey1 вне форума Ответить с цитированием
Старый 31.01.2011, 22:05   #7
egor088
Пользователь
 
Регистрация: 30.01.2011
Сообщений: 15
По умолчанию

И еще скажите где ошибка?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,d,e,f,i,s,n :extended;
begin
 a:=StrToFloat(Edit1.Text);
 b:=StrToFloat(Edit2.Text);
 c:=b/0.7;
 c:=Trunc(c*10)/10;
 d:=a/30;
 d:=Trunc(d*10)/10;
 e:=c-d;
 f:=e*n;
 f:=Trunc(f*100)/100;
 i:=d*5.5;
 i:=Trunc(i*100)/100;
 s:=f+i;
 Edit3.Text:=FloatToStrF(s,ffFixed,4,1);
end;

 procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
case RadioGroup1.ItemIndex of
  0: n:=4
  1: n:=5
end;

Последний раз редактировалось Stilet; 03.02.2011 в 07:12.
egor088 вне форума Ответить с цитированием
Старый 31.01.2011, 22:14   #8
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

После операторов в case .. of ставятся знаки ;
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 01.02.2011, 10:08   #9
InternetStranger
php / delphi
Форумчанин
 
Аватар для InternetStranger
 
Регистрация: 10.06.2007
Сообщений: 175
По умолчанию

Цитата:
Сообщение от asmodey1 Посмотреть сообщение
"Ну вы, блин, даете..."
Ничего мы никому не даем (жадные). Есть определенные отличия строки от числа. Хотя бы в том, что, например, числа можно складывать, а еще умножать и делить.
Первый пост посмотрите еще раз. FloatToStrF(s,ffFixed,4 ,1); Одну из функций строкового форматирования автор уже использовал. Из чего м/о было бы предположить, что требуется арифметически отсечь.

Не... ну можно конечно строку отформатировать и затем преобразовать.
Что-то типа
Код:
 C:= Double(trim(Format('%5.2f',[C])))
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.
InternetStranger вне форума Ответить с цитированием
Старый 01.02.2011, 10:51   #10
egor088
Пользователь
 
Регистрация: 30.01.2011
Сообщений: 15
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
После операторов в case .. of ставятся знаки ;
Пожалуйста по подробней
egor088 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как ограничить количество вводимых знаков числа после запятой. proggramer Общие вопросы C/C++ 1 24.03.2010 03:15
Разделение чисел на до запятой и после запятой msser Microsoft Office Excel 8 23.10.2009 11:57
знаки после запятой RiF Помощь студентам 10 16.12.2008 20:04
Как округлять числа до целых и как оставить два знака после запятой. bles Помощь студентам 9 19.02.2008 21:53
как вывести число с ограниченным количеством цифр после запятой? delphi Ensoph Помощь студентам 1 02.10.2007 07:50