Форум: "Начинающим";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];
ВнизЧисло знаков Найти похожие ветки
← →
Tonich © (2006-01-15 13:30) [0]Вот такой вот вопрос.
есть некоторое число ну например 0,5546115. Необходимо произвести "качание" этого число в последнем знаке после запятой.
Ну например
0,5546115+0,0000001
0,5546115+0,0000009
0,5546115-0,0000001
0,5546115+0,0000002
0,5546115-0,0000003
....
Так вот как узнать число знаков после запятой
← →
Profi © (2006-01-15 13:34) [1]Переведи в строку, длина - позиция запятой.
← →
Tonich © (2006-01-15 13:35) [2]
> Profi © (15.01.06 13:34) [1]
да, это был один из вариантов, согласен
я думал есть более "красивые",
но всеравно посибо
← →
Profi © (2006-01-15 13:40) [3]Tonich © (15.01.06 13:35) [2]
Можно конечно в цикле делить на 10 без остатка, и считать сколько раз это получится, но строкой, как мне кажется, самое простое.
← →
Nikolay M. © (2006-01-15 13:44) [4]
> Profi © (15.01.06 13:34) [1]
И что это будет с числами типа 0.2399999999999 или 0.2500000000001? Имхо, надо получше раскрыть тему получения этих чисел и того, что, собственно, требуется получить.
← →
Tonich © (2006-01-15 13:55) [5]
> И что это будет с числами типа 0.2399999999999 или 0.2500000000001?
именно так и надо ))
Раскрыть тему? и откуда берутся числа, легко ))
Значить так, вот это число это эксцентриситет кометы в определенный момент времени, допустим на момент T1.
решая там уравнение Кеплера получаем координаты кометы после чего интегрируем(решение уравнений движения) из на момент T2, ну и соответственно получаем вектор состояния кометы на момент Т2.
ну а сам эксцентриситет дан с какой-то точность, и понятно, что с наименьшей точностью дан именно последний знак!!!
так вот для этого и производится качание последнего знака, что бы посмотреть как будит себя вести орбита кометы на момент Т2
то есть получить пачек орбит посчитать сигму и в конечном итоге дать результат в виде 0.2399999999999+-0,0000000000005 (для примера)
ну думаю так немного понятнее откуда и для чего ...
← →
palva © (2006-01-15 13:55) [6]Tonich © (15.01.06 13:30)
> Так вот как узнать число знаков после запятой
Если число double или другого плавающего типа, то компьютер не знает, сколько знаков после запятой. Число он хранит в двоичном виде и в принципе можно узнать сколько двоичных разрядов после запятой он хранит. Но после перевода в 10 с.с. как правило возникает бесконечная периодическая дробь и вопрос о количестве знаков становится бессмысленным.
← →
Nikolay M. © (2006-01-15 14:01) [7]
> > И что это будет с числами типа 0.2399999999999 или 0.2500000000001?
> именно так и надо ))
Да, но в первом случае это значение переменной а после присваивания a := 0.24; а второе - после a := 0.25;.
> сам эксцентриситет дан с какой-то точность
Значит, эту точность надо хранить в явном виде, а не пытаться ее получить из значения числа.
← →
Tonich © (2006-01-15 14:06) [8]
> Значит, эту точность надо хранить в явном виде, а не пытаться
> ее получить из значения числа.
а если у меня таких чисел сотни мне что хранить сотни точностей???? это первое.
и второе, не факт что два числа даны с одинаковой точность
← →
Nikolay M. © (2006-01-15 14:22) [9]Программа будет работать на древних пентиумах? Если нет, тогда что такое несколько сотен чисел для современных компьютеров? И храни не собственно точность 0.001 в real, а число знаков после запятой в byte, если тебя так смущает расход памяти.
← →
Набережных С. © (2006-01-15 14:28) [10]Имхо, нужно оперировать не мифическим последним знаком после запятой, а обусловленной точностью исходных данных с учетом заданной точности вычислений.
← →
Tonich © (2006-01-15 14:37) [11]
> И храни не собственно точность 0.001 в real, а число знаков
> после запятой в byte
> Имхо, нужно оперировать не мифическим последним знаком после
> запятой, а обусловленной точностью исходных данных
да явно точность данный не указана, нет такого что вот это дано стакой точность а это с такой, поэтому я и отталкиваю от последнего знака..
> а число знаков после запятой в byte
собственно это я и спрашивал в посте )))
вообщем бонятно... [1] пост...
← →
Nikolay M. © (2006-01-15 14:57) [12]
> поэтому я и отталкиваю от последнего знака..
Метрология (теория измерений) утверждает, что абсолютно неправильно отталкиваешься. Потому что если даже не принимать во внимание формат хранения вещественных чисел в компьютере, то некоторое число 123.456 - совсем не обязательно получено с точностью до одной тысячной только потому, что в нем последняя цифра стоит на третьей позиции после запятой (точность на самом деле м.б. как 1 сотая, так и 1 десятитысячная).
В [10] сказана истинная правда, так что не выдумывай упрощенных решений.
← →
Tonich © (2006-01-15 15:00) [13]
> число 123.456 - совсем не обязательно получено с точностью
> до одной тысячной только потому, что в нем последняя цифра
> стоит на третьей
согласен на все 101%
← →
Nikolay M. © (2006-01-15 15:02) [14]
> Tonich © (15.01.06 15:00) [13]
Ну а тогда откуда такие лжерешения?
← →
Набережных С. © (2006-01-15 15:03) [15]
> Tonich © (15.01.06 14:37) [11]
> да явно точность данный не указана, нет такого что вот это
> дано стакой точность а это с такой, поэтому я и отталкиваю
> от последнего знака..
Это бесперспективно:( Исходные данные откуда-то получены. Получивший их должен указать, какова точность этих данных - то есть указать величину абсолютной или относительной погрешности вычислений/измерений. Без этого можно вообще ничего не вычислять, а просто генерировать ответ с помощью Random - практическая неприменимость результата будет не меньше:))
Впрочем, я ни на чем не настаиваю - оно мне надо?
← →
Tonich © (2006-01-15 15:13) [16]
> Ну а тогда откуда такие лжерешения?
ну наверное от туда, что данные взяты не из художественной литературы, а от туда где не стали бы приводить 150 знаков после запятой из которых верить только можно первому...
но еще раз повторюсь каждое число дано с различным числом знаков...
вообщем, можно закрывать пост....
← →
Nikolay M. © (2006-01-15 15:17) [17]
> данные взяты не из художественной литературы, а от туда
> где не стали бы приводить 150 знаков после запятой из которых
> верить только можно первому...
Инопланетяне глумятся? :)
Вот и требуй "оттуда" точность предоставленных данных, по поводу всего остального тебе уже сказали и, похоже, ты сам это понимаешь.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.037 c