Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
4-1132430885
Serafim-s
2005-11-19 23:08
2006.01.29
Передача файлов по RS232


3-1133350894
Asail
2005-11-30 14:41
2006.01.29
Проверка наличия индекса в таблице...


2-1137351549
Revan
2006-01-15 21:59
2006.01.29
Как перезагрузить программу?


2-1136972101
Andrey.Ru
2006-01-11 12:35
2006.01.29
Компонент


2-1137407413
Id
2006-01-16 13:30
2006.01.29
IBsql





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский