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

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

Double - колво знаков до запятой и после [D7, WinXP]


Страницы:   1 2

kot666 ©   (2006-07-23 15:53:00) 

Всем привет.
Есть значение которое хранится в Double, нужно узнать сколько знаков до запятой и после.
Всем спасибо.


kot666   (2006-07-23 16:52:00) [21]


> Дык.. она же и в справке есть, и в исходниках, да еще и
> с комментариями. Куда ж еще подробнее-то?

Математически :)


Юрий Зотов   (2006-07-23 16:51:00) [22]

> kot666   (23.07.06 16:47) [15]

Дык.. она же и в справке есть, и в исходниках, да еще и с комментариями. Куда ж еще подробнее-то?


kot666   (2006-07-23 16:48:00) [23]


> Такое число именно в таком виде (16 знаков) не может поместиться
> в double, только приблизительное, а вот куда ты помещаешь
> результат работы Trunc остается вопросом.

LongInt


Anatoly Podgoretsky   (2006-07-23 16:47:00) [24]

kot666   (23.07.06 16:32) [9]
Такое число именно в таком виде (16 знаков) не может поместиться в double, только приблизительное, а вот куда ты помещаешь результат работы Trunc остается вопросом.


kot666   (2006-07-23 16:47:00) [25]


> Посмотрите FrExp из модуля Math (только надо учесть, что
> эта функция выдает результаты в двоичной, а не в десятичной
> системе).

Юрий! Пожалуйста можно подробнее. Спасибо.


KilkennyCat   (2006-07-23 16:44:00) [26]

есть еще научный способ. совсем научный.
К примеру, число из 16 девяток отобразится как 1E16...
Но, поскольку, ход мысли уже переключается на сторонние компоненты, то мне уже делать нечего, придется занятся своей программкой, а то понедельник на носу...


Юрий Зотов   (2006-07-23 16:41:00) [27]

Нормализованное число с плавающей точкой содержит:

- после запятой столько знаков, сколько позволяет точность типа (для Double это 15-16).

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

Посмотрите FrExp из модуля Math (только надо учесть, что эта функция выдает результаты в двоичной, а не в десятичной системе).


KilkennyCat   (2006-07-23 16:39:00) [28]

Вот вам 16.
showmessage(inttostr(trunc(9999999999999999.0)));


kot666   (2006-07-23 16:37:00) [29]

и? Сколько знаков до запятой? 11? а нужно 16.
Может в JCL кто-то юзал? JclMath?


KilkennyCat   (2006-07-23 16:36:00) [30]

нормально.


kot666   (2006-07-23 16:32:00) [31]

нашел но не вышло.
Взял число 9999999999999999
trunc вернул -1566804069 нормально блин?


KilkennyCat   (2006-07-23 16:27:00) [32]

ну если такие руны знакомы... да еще и нравятся... то может, хотя бы Trunc вспомнится?


kot666   (2006-07-23 16:21:00) [33]

Arithmetic routines из Math больше мне нравится...


kot666   (2006-07-23 16:18:00) [34]


> На мой взгляд, вполне красивый... дополню, только, что запятая
> иногда равна точке...

ну да...

> Делим на 10 пока не исчезнет дробная часть.
> Умножаем на 10 пока не исчезнет целая часть.

что значит не исчезнет?


KilkennyCat   (2006-07-23 16:17:00) [35]

На мой взгляд, вполне красивый... дополню, только, что запятая иногда равна точке...
нестроковый:
Делим на 10 пока не исчезнет дробная часть.
Умножаем на 10 пока не исчезнет целая часть.
Кол-во делений умножений есть искомое.


kot666   (2006-07-23 16:13:00) [36]

Хм... не очень красывый, но все же...
А как-то более научнее чтоли есть? :)


KilkennyCat   (2006-07-23 16:10:00) [37]

Жаль...
есть как минимум два способа.
например, изобразить число как текст.
FloatToStr
тогда кол-во до запятой и после запятой узнаем при помощи pos


kot666   (2006-07-23 16:03:00) [38]

пока нет:(


KilkennyCat   (2006-07-23 15:55:00) [39]

Есть свои собственные идеи?


Страницы:   1 2

Наверх

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