Как собственно в ИК перевести число 1.2300 типа real с последними нулями в строку с сохранением всех нулей (точности)? Перелопатил почти весь инет, везде или пытаются избавиться от нулей, или не то. Нужно для того чтобы посчитать число знаков после точки. Это можно сделать просто переведя в строку, но тогда теряются нули.. Вот задачка!
val:=1.2300;
s:=Double2str(val); // cuts zeroes
Этот топик читают: Гость
Ответов: 1291
Рейтинг: 47
|
|||
карма: 3 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
code_31899.txt
А вот где ты возьмёшь число с нулями в конце - это вопрос. Посмотри это http://forum.d2h.ru/forum.html?q=3&p=214451#p214451 |
|||
карма: 25 |
| ||
файлы: 1 | code_31899.txt [931B] [210] |
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Tad, а зачем IC
|
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco писал(а): а зачем IC Aziz писал(а): Как собственно в ИК перевестиБлин, забыл
|
|||
карма: 25 |
|
Ответов: 1291
Рейтинг: 47
|
|||
Tad, спасибо, но не то. Там ведь нету преобразования из double
eal в string. А число с нулями в конце часто встречается в фин. котировках и из-за этого графики в моей программе рисуются неправильно, т.к. там я привожу все котировки к "одному знаменателю", превращая в целое путем удаления точки - для того чтобы на график выводить величины с разной размерностью, я решил выводить их относительное изменение в пунктах. Для этого я все котировки привожу в "целый" вид и вычитаю прошлые выборки. Так вот, число 1.2300 после удаления точки должно превращаться в 12300, но т.к. "незначащие" нули теряются в Double2str - то в 123..
ИК нужен т.к. я сейчас модифицирую компонент Plotter3. |
|||
карма: 3 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
карма: 25 |
| ||
файлы: 1 | code_31902.txt [782B] [195] |
Ответов: 1291
Рейтинг: 47
|
|||
Ну, Tad, спасибо за помощь, но
1) во первых, я хочу сохранить ту точность, которая уже была до конвертации, а не приводить ее к своей. Количество знаков после точки непостоянно; 2) мне нужно именно преобразование real->string с сохранением всех имеющихся нулей; 3) мне нужен именно код, а не схема; Сейчас пытаюсь как-то так, но все равно не то:
Прибавляя маленькое число, чтобы избавиться от нулей. Но если вдруг котировка будет равна 80.00 - как тогда определить? Читал что преобразование дробных чисел - достаточно сложная штука в программировании. Вот я и напоролся.. За что боролся) Нужно просто узнать число знаков после точки в дробном числе с учетом нулей. Чтобы определить тип и размерность котировки. |
|||
карма: 3 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
1. т.е. у тебя число 1.003456 после твоего преобразования будет больше чем 999.00 (1003256 и 99900) ?
2. вообще не понятно. 3. это понятно. |
|||
карма: 25 |
|
Ответов: 1291
Рейтинг: 47
|
|||
Tad,
Нужно просто узнать число знаков после точки в дробном числе с учетом нулей. Чтобы определить тип и размерность котировки. ------------ Дoбавленo в 00.04: число 1.003456 должно стать 1003456 Но это уже моя кухня, к проблеме не относится, что я потом буду делать определив число цифр и нулей после точки. |
|||
карма: 3 |
|
Ответов: 8930
Рейтинг: 823
|
|||
Aziz, интересно, как Вы определяете на сколько значащих нулей оканчивается число Например: 1.2300, а может 1.23000
|
|||
карма: 19 |
|
Ответов: 1291
Рейтинг: 47
|
|||
Леонид, числа будут нормализованные поступать на вход. Либо с 4 знаками после точки (евродоллар и пр) либо с 2-мя (йена и пр). Но я не хочу в компонент загружать имена котировок, хотелось бы из самой цены эту инфу извлечь. Если 4 знака после точки - значит четырехзнаковая, 2 - двух.
Но даже если 30 нулей будет - не страшно - ведь я потом просто вычитаю их и вычисляю отклонение в пунктах. ------------ Дoбавленo в 00.10: Вот уж не думал что такая простая задача такая неразрешимая будет.. |
|||
карма: 3 |
|
Ответов: 8930
Рейтинг: 823
|
|||
Aziz, ну и сортируйте их по названию, преобразуте в строку и на доллар дописывайте нули до 4-х знаков, на йену -- до 2, галову не забивайте
|
|||
карма: 19 |
|
Ответов: 1291
Рейтинг: 47
|
|||
Это проще - можно вообще в компоненте поля забацать под каждую валюту и устаналивать их динамически - но это как-то топорно. Хотелось бы более гибко и программно. Ну и вообще меня заинтересовала эта головоломка - неужели никак не решить, ведь это элементарная работа со строками и пр. Где-то встречал совет делить на 10 - сколько делений - столько и цифр.
|
|||
карма: 3 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Aziz писал(а): Вот уж не думал что такая простая задача Просто не в ту сторону думаешь. 1. Тебе данные уже приходят в виде строки (а не цифры). Например: котировка золота 1,356.50 и это не цифра - это строка. 2. Определить тип валюты - тоже никаких проблем, как и их разделитель. Ссылочку дай где берёшь данные. Посмотреть в живую. |
|||
карма: 25 |
|
Ответов: 1291
Рейтинг: 47
|
|||
Я не с сайта беру, а из терминала Метатрейдер - а он берет от брокера Форекс4ю. Затем через реестр котировки в текстовом формате из терминала ввожу в прогу. Просто компонент Grafer3 (см. раздел модов компонентов) делает выборку в массив real. Впрочем, спасибо, за подсказку, наверное я капитулирую и создам дублирующий его массив строк с котировками. Проще но гениальностью совсем не пахнет .)) Потому что походу никак не решишь эту задачу. Это уравнение со многими переменными.
|
|||
карма: 3 |
|