![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Форматирование Double [D6]
kull © (2002-04-26 10:54:00)Такой вопрос:
Делаю Format("%.2f",[11111111111111111111.0]);
На выходе получается 1,11111111111111111E19 ,
а надо: 11111111111111111100,00 ,как сделать?
kull (2002-04-26 15:27:00) [21]
> посчитал единички- их же 20!
да мне хоть 320, надо на выходе получить строку с числом дополненым нулями 300 раз, точность теряется и ладно.
Игорь Шевченко (2002-04-26 15:23:00) [22]День добрый, Kull,
Извиняюсь, ошибся.
С кем не бывает :-)))
На худой конец можно текстовую строку после Format разобрать и представть в требуемом виде.
Кстати, вопрос: А зачем такие мучения нужны (в смысле, что за задача) ?
С уважением,
kull (2002-04-26 15:22:00) [23]2MBo
> числа-то в двоичном виде хранятся
А какое дело в каком виде они хранятся, не вижу связи. Что неужели труднее сделать 1*(10^0)?
Оперируем-то мы ими в 10-ом виде в математических операциях.
Например 2*2 = 4, а не 100 ...
MBo (2002-04-26 15:18:00) [24]посчитал единички- их же 20!
это число не представить точно. 15-16 цифр для double и 17-18 для extended
MBo (2002-04-26 15:08:00) [25]>kull
>что то не похоже на 1E0 ...
числа-то в двоичном виде хранятся
0.5*2^1=1
kull (2002-04-26 15:08:00) [26]Я понял как работает FrExp: 0.5*(2^1) = 1
Правда это в моей задаче не очень поможет...
kull (2002-04-26 14:57:00) [27]
> Игорь Шевченко © (26.04.02 14:51)
Аха... как же.
FrExp(1,M,E);
результат:
M = 0.5
E = 1
что то не похоже на 1E0 ...
Игорь Шевченко (2002-04-26 14:51:00) [28]День добрый,
1,11111111111111111E19
Мантисса 1.111111111111111
Экспонента E19
С уважением,
kull (2002-04-26 14:35:00) [29]Что то я не втыкаю, как работает FrExp.
Что такое мантисса и экспонента - объясните глупому.
Johnmen (2002-04-26 13:25:00) [30]Игорь Шевченко © (26.04.02 13:11) : попробовали....
kull (2002-04-26 13:13:00) [31]
> Можно попробовать использовать функцию FrExp для выделения
> мантиссы и экспоненты, а дальше форматировать руками, к
> примеру...
Спасибо!
Вот это уже дело, посмотрим...
kull (2002-04-26 13:12:00) [32]2Johnmen
А нельзя ли конкретный пример привести к моему числу, а то я сколько не пыжился ничего не получилось.
Игорь Шевченко (2002-04-26 13:11:00) [33]День добрый, Johnmen,
Прежде чем советовать, не попробовали ?
для kull ©:
Можно попробовать использовать функцию FrExp для выделения мантиссы и экспоненты, а дальше форматировать руками, к примеру...
С уважением,
Johnmen (2002-04-26 13:11:00) [34]пиши свою ф-ию....
kull (2002-04-26 13:03:00) [35]Спасибо за совет!
Но мне не нужно представлять большие значения через 64-битные целые, и точность меня не волнует.
Меня интересует как отформатировать Double, чтоб небыло экспоненциального вида пусть это будет 1 и 300 нулей - это не важно.
Johnmen (2002-04-26 12:58:00) [36]FormatFloat()
Игорь Шевченко (2002-04-26 12:55:00) [37]День добрый,
Прежде чем "хотеть странного" можно почитать про точность представления чисел с плавающей точкой в Delphi, раздел справки Real Types...
Я бы рекомендовал использовать целые 64-битные числа для представления больших точных значений.
С уважением,
kull (2002-04-26 12:26:00) [38]Ну чтож никто не знает.
Ну хотя бы какую-нибудь другую функцию.