Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.048 c
2-1212241497
9899100
2008-05-31 17:44
2008.06.29
ресурсы


15-1210936135
Kolan
2008-05-16 15:08
2008.06.29
SQLite не может получить доступ на Висте, почему?


2-1212586709
Михаил
2008-06-04 17:38
2008.06.29
Помогите с формой


15-1210752135
Петр
2008-05-14 12:02
2008.06.29
Проблема с установкой Касперского


3-1201003179
pavel_guzhanov
2008-01-22 14:59
2008.06.29
соединение с базой Oracle





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский