|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Помогите пожалуйста!!
Код:
var f1,k1,a1,b1,c1,d1: real; begin a1:=StrToFloat(Edit1.Text); b1:=StrToFloat(Edit2.Text); c1:=StrToFloat(Edit3.Text); d1:=StrToFloat(Edit4.Text); k1:=(a1+b1+c1+d1); f1:=(2* a1+3* b1+4* c1+5* d1)/k1; label1.Caption:=FloatToStrF(f1,ffFixed,1,1); Как мне сделать, чтобы если значения a1=1, b1=1, c1=1, d1=1, то в Label выводлися бы ответ не «3,5», а ответ был бы равен «3.5»? Подскажите пожалйста на моем примере! |
#2
|
|||
|
|||
Не понятно, у тебя при таком условии результат в Label будет 3.5 , а какой нужен? Если разделитель точка нужна "." - это в настройках Windows меняется
Последний раз редактировалось PashaXP, 05.08.2008 в 13:53. |
#3
|
|||
|
|||
А если програмно, то
Код:
procedure TForm1.Button1Click(Sender: TObject); var f1,k1,a1,b1,c1,d1: real; str:string; begin a1:=StrToFloat(Edit1.Text); b1:=StrToFloat(Edit2.Text); c1:=StrToFloat(Edit3.Text); d1:=StrToFloat(Edit4.Text); k1:=(a1+b1+c1+d1); f1:=(2* a1+3* b1+4* c1+5* d1)/k1; str:=FloatToStrF(f1,ffFixed,1,1); if Pos(',',str)<>0 then str[Pos(',',str)]:='.'; label1.Caption:=str; end; |
#4
|
||||
|
||||
Ответ будет не в виде "3.5", а в виде "3,5"(. Если у меня будет стоять FloatToStrF(f1,ffFixed,1,1), то ответ будет с запятой. Например, если даже ответ целый получается, то в Label ответ выведется например так: "4,0". А если написать просто FloatToStr(f1), то будет выводится дробь длинная. Но мне нужно, чтобы я в StringGrid-е мог сложить по столбцам. Эту сумму мне надо разделить на четыре и вывести в ячейку таблицы. Но мне программа выдает ошибку: "3,5 is not valid integer value". Что мне сделать, чтобы заработало? Подскажите пожалуйста!)). А как изменить в настройках Windows?
|
#5
|
|||
|
|||
Как выше сделал не подходит?
|
#6
|
|||
|
|||
Пуск -> Настройка -> Панель управления -> Язык и региональные стандарты. Нажми кнопку "настройка", там увидешь
Но тебе, так понял, не это нужно. Тебе округлять что-ли значения до цеглого нужно? Последний раз редактировалось PashaXP, 05.08.2008 в 14:19. |
#7
|
|||
|
|||
1. Label3.Caption := StringReplace(Str, ',', '.', []);
2. Системные настройки лучше не трогать, потому как глюков не меряно можно схватить при использовании других программ, которые под русскую локаль настроены. |
#8
|
|||
|
|||
Цитата:
это точно! |
#9
|
||||
|
||||
PashaXP, код попробовал). Теперь он дробную часть отделяет точкой. Это хорошо. Но получится ли у меня в StringGrid-e сложить столбец с дробями и разделить на 4? Про настройки я понял. Не буду менять. Phedor, а что делает функция StringReplace?)
|
#10
|
|||
|
|||
Цитата:
тоже что и у меня только - "в один присест " |
#11
|
|||
|
|||
Код я на Delphi сделал и выложил, меняет запятую в слове на точку... Напиши подробнее, что ты хочешь в результате получить, на примере...
|
#12
|
|||
|
|||
Цитата:
1. Нужно просто разделить отображение и арифметику. 2. function StringReplace(const S: string; const OldPattern: string; const NewPattern: string; Flags: TReplaceFlags): string; S - Исходная строка OldPattern - подстрока NewPattern - на что заменить Flags - TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase); rfReplaceAll - заменить все frIgnoreCase - игнорировать регистр 3. a1:=StrToFloat(Edit1.Text); Такие вещи лучше в try ... except ... включать. Очень часто человеки ставят и запятую и точку как разделитель, кто что хочет то пишет (особенно любители Excel), еще бывает ставят разделители тыс. части типа: "1 200,20", "1,200.20", "1'200,20". Вообще смотря кто будет пользоваться :-) Последний раз редактировалось Phedor, 05.08.2008 в 15:30. |
#13
|
||||
|
||||
PashaXP, вот код:
Код:
{1} if Form1.Label7.Caption='' then SG3.Cells[2,1]:='0' else SG3.Cells[2,1]:=Form1.Label7.Caption; (это получение данных с первой формы) summ:=(StrToFloat(SG3.cells[2,1])+StrToFloat(SG3.cells[8,1])+StrToFloat(SG3.cells[14,1])+StrToFloat(SG3.cells[20,1]))/4; SG3.Cells[26,1]:=FloatToStr(summ); Мне надо, чтобы например в первой строчке можно было сложить четыре дробных числа и разделить на 4. Ответ снова получится дробь и этот / ответ надо вывести в указанную ячейку). Кто что может предложить?) Цитата:
|
#14
|
||||
|
||||
Люди! Для таких простых целей есть две глобальных переменных - DecimalSeparator - разделитель цело и дробной части и ThousandSeparator - разделитель тысяч.
пример: DecimalSeparator:='.' - разделитель бедет точка '.' DecimalSeparator:=',' - разделитель бедет запятая ',' Хорошо написанная программа не требует документации ICQ 9-184-668. |
#15
|
||||
|
||||
Цитата:
|