Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.29;
Скачать: CL | DM;

Вниз

Delphi_округление чисел   Найти похожие ветки 

 
mary   (2008-05-19 16:47) [0]

Добрый день! Подскажите, пожалуйста, мне нужно в Memo в столбец вынести числа, которые до этого предварительно рассчитываются специальными процедурами. Только по умолчанию, при выводе у них дико много знаков после запятой. Мне надо бы округлить. Round и RoundTo почему-то не помогают достичь желаемого результата :( Была бы очень благодрарна за совет!!


 
@!!ex ©   (2008-05-19 16:48) [1]

IntToStr(Round(Value)) Не работает? :)
И как же так?


 
Style ©   (2008-05-19 16:49) [2]

FormatFloat ?


 
TIF ©   (2008-05-19 16:50) [3]

Код в студию. Нужно глянуть, как ты это пытаешься делать с Roundом


 
mary   (2008-05-19 16:51) [4]

Так до целого значения округляет, а мне нужно где-то до 5 знаков после запятой..


 
Style ©   (2008-05-19 16:53) [5]

Memo1.Lines.Add(
 FormatFloat("0.#####", Value)
 );


 
@!!ex ©   (2008-05-19 16:56) [6]

> [4] mary   (19.05.08 16:51)

Round(Value*10000)/10000;


 
mary   (2008-05-19 16:58) [7]

Мой код вот:

memo1.Lines[0]:=("z* = " + FloatToStr(RoundTo(z1[1], -5)));
memo1.Lines[1]:=("Ck = " + FloatToStr(RoundTo(z1[2], -5)));
for j:=2 to n do
memo1.Lines[j]:=("         "+ FloatToStr(RoundTo(z1[j+1], -5)));


 
Style ©   (2008-05-19 17:02) [8]

const
Fmt = "0.#####";

begin

 for j:=2 to n do
 memo1.Lines[j] := "         "+  FormatFloat(Fmt, z1[j+1]);


 
mary   (2008-05-19 17:07) [9]

Ооооооо!!!!!! ОГРОМЕНОЕ ВСЕМ СПАСИБО!!!!!!!! Всё теперь ОК!!!! :)))))))


 
Zeqfreed ©   (2008-05-19 18:05) [10]

> @!!ex ©   (19.05.08 16:56) [6]

Зачем так вообще делать?


 
palva ©   (2008-05-19 18:12) [11]

Еще есть функция RoundTo, позволяющая округлять до нужного количества цифр.


 
@!!ex ©   (2008-05-19 18:13) [12]

> [10] Zeqfreed ©   (19.05.08 18:05)
> > @!!ex ©   (19.05.08 16:56) [6]
>
> Зачем так вообще делать?

ShowMessage(FloatToStr(1.23456789)+" "+FloatToStr(round(1.23456789*10000)/10000));

Запусти и удивись.


 
@!!ex ©   (2008-05-19 18:21) [13]

> [10] Zeqfreed ©   (19.05.08 18:05)

А потом посмотри как работает RoundTo и удивись еще раз.


 
Zeqfreed ©   (2008-05-19 18:29) [14]

> @!!ex ©   (19.05.08 18:13) [12]

Запустил. Не удивлен.


 
palva ©   (2008-05-19 18:33) [15]

Что-то не увидел разницы:

{$APPTYPE CONSOLE}
uses Math;
var
 V: Double = 1.23456789;
begin
 WriteLn(RoundTo(V, -4));         //   1.23460000000000E+0000
 WriteLn(Round(V*10000)/10000);   //   1.23460000000000E+0000
end.


 
Zeqfreed ©   (2008-05-19 18:34) [16]

> @!!ex ©   (19.05.08 18:21) [13]

Тебе когда нужно огранизовать цикл, как поступаешь?

for i := 0 to Count - 1 do . . .

или

i := 0;
label:
 . . .
Inc(i);
if (i < Count) then goto label;


?


 
@!!ex ©   (2008-05-19 18:34) [17]

> [15] palva ©   (19.05.08 18:33)

А ее и нет.
RoundTo делает один в один тоже самое, что я написал в [6]. Только ему еще число 10 в степень указанную возводить приходится, и переменные лишние хранить.


 
@!!ex ©   (2008-05-19 18:36) [18]

> [16] Zeqfreed ©   (19.05.08 18:34)

не удачная метафора.
Использовать RoundTo или деление - по количеству кода и понятности разницы нет(про понятность можете поспорить, но помойму так).

А использование Label - увеличивает количество строк -> ухудшает читабельность.


 
Zeqfreed ©   (2008-05-19 19:02) [19]

> @!!ex ©   (19.05.08 18:36) [18]

Ну да, одинаково по понятности. Ну, пускай по-твоему будет :)  Особенно весело потом будет исправлять это во всех местах если нужно будет изменить логику округления (например, придумают более точный алгоритм округления).

Вы уж определитесь как ты ко мне обращаешься ;)


 
@!!ex ©   (2008-05-19 19:32) [20]

> Вы уж определитесь как ты ко мне обращаешься ;)

Зависит от контекста.

Я не спорю, что RoundTo возможно где то и предпочтительней. А может и нет.
Мне просто непонятен наезд в [10].


 
Zeqfreed ©   (2008-05-19 20:05) [21]

> @!!ex ©   (19.05.08 19:32) [20]

Вообще, то был просто вопрос :)


 
Anatoly Podgoretsky ©   (2008-05-19 22:13) [22]

Какое еще округление для чисел с плавающей запятой, кроме округления до челого, это все иллюзия.
Только FormatFloat 0.00000


 
Amoeba ©   (2008-05-19 23:00) [23]

Спорщикам читать вот это:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374


 
palva ©   (2008-05-19 23:16) [24]


> Спорщикам читать вот это:

Гораздо интереснее спорить в коллективе, чем читать одному. У-у-у...



Страницы: 1 вся ветка

Текущий архив: 2008.06.29;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.016 c
2-1212246366
Pi:=3.14...
2008-05-31 19:06
2008.06.29
Переход в папку


2-1212397215
C_R_U_S_H
2008-06-02 13:00
2008.06.29
Ошибка при установлении соединия ADOConnection


3-1200909327
MZ
2008-01-21 12:55
2008.06.29
запрос


2-1212122243
кот
2008-05-30 08:37
2008.06.29
Числовое значение символа.


2-1212522851
DJ_UZer
2008-06-03 23:54
2008.06.29
Color To Html