![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
1) Нужна функция, возращающая кол-во значимых знаков после точки
Пример: x=1.567345673 result=9 x=1432.45 result=2 x=243.2354 result=4 2) Как создать новый Series:TChartSeries для Chart1:TChart, со свойствами уже имеющегося Series'а. 3) При куче zoom'ов для Chart'а всплывает ошибка. Как от неё избавиться? -------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Разделил бы ты вопросы...
1) Перевести в строку и найти позицию точки с конца... 2) А там свойства Assign случайно нет? Если нет - то только присвоением свойств... 3) Не знаю, скорее всего попробовать другой компонент. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
В строку он переводит в стандартно виде- типа 1.123е+2 и долго.
-------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Умножай в цикле на 10 и проверяй осталась ли дробная часть (Frac) большая нуля или нет.
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Nloge |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 25.3.2002 Репутация: нет Всего: нет |
В общем случае никак ты это не сделаешь. Проблема в том что комп хранит вещественные числа как мантису и показатель экспоненты. То есть в виде который тебе выдается при простом write, вот так: 1.123е+2 (храниться число 1.123 и число 2). После запятой бесконечное число знаков, точнее не бесконечное, а определяемое числом бит выделенных под хранение твоей вещественной переменной. Если ты хочешь проверять число знаков после запятой у заданной тобой константы, то ты еще может и выкрутишся как-то. А если нужно получить число знаков после запятой у результата каких-то вычислений, то можно нарваться на неприятность, потому как даже результат деления 5/2 может храниться как 2.499999999999. И это не глюк - это особенность работы с вещественными числами. Я конечно немного утрирую и для специальных случаев можно попробовать делать так как советует Vit - но не удивляйся если в некоторых случаях работать не будет. |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
А что мешает читать мантиссу ? Формат-то известен ...
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: 1 Всего: 5 |
Для этого можно использовать форматный перевод в строку, например FloatToStrF(переменная,fffixed,знаков, после запятой). Может с другими опциями, не помню какие есть еще. Но это скучно. -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
Кстати, у меня ещё были проблемы с тпиом double, когда теоритически в ней хранится, например, число 10, то при сравнении с 10 он пишет что они не равны-на последних байтах тварится какая-то фигня(ошибка исправляется,если число умножить и поделить на 10000000 или ещё какое-нть большое число)
-------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: 1 Всего: 5 |
Так и должно быть (смотри сообщение Nloge). А насчет такого принудительного округления - так это как раз используется принцип клин-клином. А называется это - ошибка усечения, т.е. при умножении двух чисел с ограниченной разрядностью происходит потеря младших разрядов. Для уменьшения влияния этого вида ошибки существует целая система правил - в каком порядке предпочтительней организовывать вычисления...
-------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: 1 Всего: 5 |
Для обсуждения проблем, связанными с ошибками я запустил новую тему в разделе Технологии и Алгоритмы: Про вычислительные ошибки
-------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Я знаю формат числа с плаваюшей точкой (и двойной точности). Но кто подскажет, как число, например float как бы разбить на все 3 части. Я имею ввиду на знак, степень и мантиссу? -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Это из конференции RTFM
Примечание (мое) dd 40600000h - Это шестнадцетиричная запись real-числа из 4 -х байт (в паскале - real). -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
И ещё
power(-1,1/3)-не вычисляется, мне так кажется потому что 1/3=0.(3), или в переменной 0.33333333333333333333333=33333333333333333333333/(10^23) =>x^(1/3)=корень 10^23 степени из числа x^33333333333333333333333. Как от этого избавиться? -------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Попробуй:
power(a,b) == exp(b*ln(a)) ;) -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
Ты немного не понял, я говорю про кубический корень из отриц. числа, а на сколько я знаю, ln не существует для отриц. чисел, если я не прав, исправьте. -------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |