Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Округление числа [D7, XP]


vitv ©   (2006-12-18 10:06:00) 

Для хранения числа я использую Decimal(2,2). При подсчёте среднего значения число не округляется, т.е.

10+9+10=29/3=9,6666666666(на калькуляторе)
10+9+10=29/3=9,66(в программе)

Как лучше поступить в данной ситуации?


vitv   (2006-12-19 14:19:00) [1]


> Бред.
> Обосновывать не надо?
>

Понял...


Anatoly Podgoretsky   (2006-12-18 15:21:00) [2]

> VitV  (18.12.2006 15:17:10)  [10]

> Decimal(2,8),

Бред.
Обосновывать не надо?


VitV   (2006-12-18 15:17:00) [3]


> Посчитай количество цифр.
>

т.е. Decimal(2,8), а отображать  Decimal(2,2).


Anatoly Podgoretsky   (2006-12-18 14:23:00) [4]

> VitV  (18.12.2006 14:14:08)  [8]

Посчитай количество цифр.


VitV   (2006-12-18 14:14:00) [5]

Я хочу 9,67


Anatoly Podgoretsky   (2006-12-18 12:30:00) [6]

> vitv  (18.12.2006 10:06:00)  [0]

Это как, два знака после запятой и всего два знака и ты при этом хочешь видеть 9,66, нестыковка однако.


palva   (2006-12-18 12:04:00) [7]

И если ей присвоишь 9.66, то и FloatToStr(v) так и вернёт 9.66, а если 9.666666, то 9.666666 :)

А если 9.660000000000004, то вернет 9.66 - не порядок! {$APPTYPE CONSOLE}
uses SysUtils;
var
 v, t: Double;
begin
 v := 9.66;
 WriteLn(FloatToStr(v)); // 9.66
 t := 9.660000000000004;
 if v <> t Then
   WriteLn(FloatToStr(t)); // 9.66
end.


ЮЮ   (2006-12-18 11:20:00) [8]

9,6666666666(на калькуляторе)

Он врет. там 6-рок должно быть гораздо больше

10+9+10=29/3=9,66(в программе)

Decimal(2, 2) - по определеню, 2 знака после запятой
Почему?

Потому, что не знаю, как а программе использовать Decimal(2,2).
а Double проще простого:
var
 v: Double;

И если ей присвоишь 9.66, то и FloatToStr(v) так и вернёт 9.66, а если 9.666666, то 9.666666 :)
А Extended ещё, говорят лучше.


VitV   (2006-12-18 11:00:00) [9]


>
> > Для хранения числа я использую Decimal(2,2)
>
>
> А я предпочитаю Double и им подобные.
>

Почему?


VitV   (2006-12-18 10:58:00) [10]


> Steep ©   (18.12.06 10:44) [1]
>
> Round(29/3)

SELECT AVG(CENA) FROM


ЮЮ   (2006-12-18 10:52:00) [11]


> Для хранения числа я использую Decimal(2,2)


А я предпочитаю Double и им подобные.


Steep   (2006-12-18 10:44:00) [12]

Round(29/3)


Наверх

Титульная страница Поиск, карта сайта Написать письмо