![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Double - колво знаков до запятой и после [D7, WinXP]
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]Есть свои собственные идеи?