Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2007, 02:38   #1
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию Double/?

Что это за тип? Вроде как дробное число, как его округлить, сконвертировать можно?
Viteef вне форума Ответить с цитированием
Старый 24.07.2007, 03:21   #2
GamiyDO
 
Регистрация: 21.07.2007
Сообщений: 5
По умолчанию

Double - вещественный (или дробный) тип.
Диапазон допустимых значений - от 5.0 x 10^-324 до 1.7 x 10^308
Размер в байтах - 8

Скругляется Double плохо (то есть иногда неправильно, не так как нас учили в школе на математике). И вообще,в одной книжке написано, что вычисления с дробными (действительными) числами выполняются ПРИБЛИЖЕННО, за исключением типа Currency (Финансовый).

Вот функции, которые применимы к Double

function Round(X: Extended): Int64; - возвращает значение Х, округленное к ближайшему целому (результат функции - целое число). В хэлпе по Delphi написано, что , если Х - находится точно посередине между двумя целыми числами, то результат ВСЕГДА ЧЕТНОЕ число.

Есть еще функции - RoundTo, SimpleRoundTo, Trunc

RoundTo, SimpleRoundTo - работают аналогично Round, а Trunc - просто отбрасывает дробную часть и возвращает целое число.
Машинная программа выполняет то, что вы ей приказали делать, а не то, что бы вы хотели, чтобы она делала
(Третий закон Грида// Законы Мэрфи)
GamiyDO вне форума Ответить с цитированием
Старый 24.07.2007, 09:50   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Real48 2.910–39 1.71038
Real 5.010-324 1.710308
Single 1.510-45 3.41038
Double 5.010-324 1.710308
Extended 3.610-4932 1.1104392
Comp -263 262
Currency –922337203685477.5808 922337203685477.5807

Округлять удобно этой функцией (2 знака)
Код:
function Round2(ValueRound: Double): Double;
begin
   ValueRound := ValueRound * 100;
   if Frac(ValueRound) >= 0.5 then
      Result := (Int(ValueRound) + 1) / 100
   else
      Result := Int(ValueRound) / 100
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 24.07.2007, 23:10   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Он добавлен для совместимости с Си
Округляется как и все остальные trunc() - отсечение дробной части, round() - округление
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 24.07.2007 в 23:14.
mutabor вне форума Ответить с цитированием
Старый 24.07.2007, 23:27   #5
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

http://delphibasics.ru/Double.php
Alar вне форума Ответить с цитированием
Старый 24.07.2007, 23:38   #6
Net
;-)
Пользователь
 
Регистрация: 18.07.2007
Сообщений: 69
По умолчанию

На счет совместимости с Си первый раз слышу..
Стандартный 8-байтовый тип... родной для FPU. роднее только 80-битный Extended
Net вне форума Ответить с цитированием
Старый 25.07.2007, 02:28   #7
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

Всем спасибо!
Viteef вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертация типов: Double to Integer Noor Общие вопросы Delphi 4 26.09.2012 18:46
диапазон double и погрешности вычислений ilyagoo Общие вопросы C/C++ 4 13.12.2007 17:29
Символьный массив и double dima Общие вопросы C/C++ 5 15.12.2006 03:52