Главная страница
    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.037 c
15-1210773374
homm
2008-05-14 17:56
2008.06.29
Вопрос по overlapped - файлам


2-1212467689
кот
2008-06-03 08:34
2008.06.29
целое число


15-1210775089
Vlad Oshin
2008-05-14 18:24
2008.06.29
Впервые в команде. Думал, прикалываетесь.


15-1200521010
Юрий Зотов
2008-01-17 01:03
2008.06.29
Наконец-то нормальными глазами...


15-1211098247
No_Dead
2008-05-18 12:10
2008.06.29
Посоветуйте...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский