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

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

Число знаков


Tonich ©   (2006-01-15 13:30:00) 

Вот такой вот вопрос.
есть некоторое число ну например 0,5546115. Необходимо произвести "качание"  этого число в последнем знаке после запятой.
Ну например
0,5546115+0,0000001
0,5546115+0,0000009
0,5546115-0,0000001
0,5546115+0,0000002
0,5546115-0,0000003
....
Так вот как узнать число знаков после запятой


Nikolay M.   (2006-01-15 15:17:00) [1]


> данные взяты не из художественной литературы, а от туда
> где не стали бы приводить 150 знаков после запятой из которых
> верить только можно первому...

Инопланетяне глумятся? :)
Вот и требуй "оттуда" точность предоставленных данных, по поводу всего остального тебе уже сказали и, похоже, ты сам это понимаешь.


Tonich   (2006-01-15 15:13:00) [2]


> Ну а тогда откуда такие лжерешения?

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

но еще раз повторюсь каждое число дано с различным числом знаков...

вообщем, можно закрывать пост....


Набережных С.   (2006-01-15 15:03:00) [3]


> Tonich ©   (15.01.06 14:37) [11]


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

Это бесперспективно:( Исходные данные откуда-то получены. Получивший их должен указать, какова точность этих данных - то есть указать величину абсолютной или относительной погрешности вычислений/измерений. Без этого можно вообще ничего не вычислять, а просто генерировать ответ с помощью Random - практическая неприменимость результата будет не меньше:))

Впрочем, я ни на чем не настаиваю - оно мне надо?


Nikolay M.   (2006-01-15 15:02:00) [4]


> Tonich ©   (15.01.06 15:00) [13]

Ну а тогда откуда такие лжерешения?


Tonich   (2006-01-15 15:00:00) [5]


> число 123.456 - совсем не обязательно получено с точностью
> до одной тысячной только потому, что в нем последняя цифра
> стоит на третьей

согласен на все 101%


Nikolay M.   (2006-01-15 14:57:00) [6]


> поэтому я и отталкиваю от последнего знака..

Метрология (теория измерений) утверждает, что абсолютно неправильно отталкиваешься. Потому что если даже не принимать во внимание формат хранения вещественных чисел в компьютере, то некоторое число 123.456 - совсем не обязательно получено с точностью до одной тысячной только потому, что в нем последняя цифра стоит на третьей позиции после запятой (точность на самом деле м.б. как 1 сотая, так и 1 десятитысячная).
В [10] сказана истинная правда, так что не выдумывай упрощенных решений.


Tonich   (2006-01-15 14:37:00) [7]


> И храни не собственно точность 0.001 в real, а число знаков
> после запятой в byte


> Имхо, нужно оперировать не мифическим последним знаком после
> запятой, а обусловленной точностью исходных данных

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


> а число знаков после запятой в byte

собственно это я и спрашивал в посте )))

вообщем бонятно... [1] пост...


Набережных С.   (2006-01-15 14:28:00) [8]

Имхо, нужно оперировать не мифическим последним знаком после запятой, а обусловленной точностью исходных данных с учетом заданной точности вычислений.


Nikolay M.   (2006-01-15 14:22:00) [9]

Программа будет работать на древних пентиумах? Если нет, тогда что такое несколько сотен чисел для современных компьютеров? И храни не собственно точность 0.001 в real, а число знаков после запятой в byte, если тебя так смущает расход памяти.


Tonich   (2006-01-15 14:06:00) [10]


> Значит, эту точность надо хранить в явном виде, а не пытаться
> ее получить из значения числа.


а если у меня таких чисел сотни мне что хранить сотни точностей???? это первое.
и второе, не факт что два числа даны с одинаковой точность


Nikolay M.   (2006-01-15 14:01:00) [11]


> > И что это будет с числами типа 0.2399999999999 или 0.2500000000001?
> именно так и надо ))

Да, но в первом случае это значение переменной апосле присваивания a := 0.24; а второе - после a := 0.25;.


> сам эксцентриситет дан с какой-то точность

Значит, эту точность надо хранить в явном виде, а не пытаться ее получить из значения числа.


palva   (2006-01-15 13:55:00) [12]

Tonich ©   (15.01.06 13:30)  
> Так вот как узнать число знаков после запятой
Если число double или другого плавающего типа, то компьютер не знает, сколько знаков после запятой. Число он хранит в двоичном виде и в принципе можно узнать сколько двоичных разрядов после запятой он хранит. Но после перевода в 10 с.с. как правило возникает бесконечная периодическая дробь и вопрос о количестве знаков становится бессмысленным.


Tonich   (2006-01-15 13:55:00) [13]


> И что это будет с числами типа 0.2399999999999 или 0.2500000000001?

именно так и надо ))
Раскрыть тему? и откуда берутся числа, легко ))
Значить так, вот это число это эксцентриситет кометы в определенный момент времени, допустим на момент T1.
решая там уравнение Кеплера получаем координаты кометы после чего интегрируем(решение уравнений движения) из на момент T2, ну и соответственно получаем вектор состояния кометы на момент Т2.

ну а сам эксцентриситет дан с какой-то точность, и понятно, что с наименьшей точностью дан именно последний знак!!!

так вот для этого и производится качание последнего знака, что бы посмотреть как будит себя вести орбита кометы на момент Т2

то есть получить пачек орбит посчитать сигму и в конечном итоге дать результат в виде 0.2399999999999+-0,0000000000005 (для примера)

ну думаю так немного понятнее откуда и для чего ...


Nikolay M.   (2006-01-15 13:44:00) [14]


> Profi ©   (15.01.06 13:34) [1]

И что это будет с числами типа 0.2399999999999 или 0.2500000000001? Имхо, надо получше раскрыть тему получения этих чисел и того, что, собственно, требуется получить.


Profi   (2006-01-15 13:40:00) [15]

Tonich ©   (15.01.06 13:35) [2]
Можно конечно в цикле делить на 10 без остатка, и считать сколько раз это получится, но строкой, как мне кажется, самое простое.


Tonich   (2006-01-15 13:35:00) [16]


> Profi ©   (15.01.06 13:34) [1]

да, это был один из вариантов, согласен
я думал есть более "красивые",
но всеравно посибо


Profi   (2006-01-15 13:34:00) [17]

Переведи в строку, длина - позиция запятой.


Наверх

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