2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Количество цифр числа
Сообщение09.07.2012, 17:54 
Аватара пользователя


22/09/08
174
Представим среду программирования, где нет конструкций While и Until, а только циклы фиксированной длины.

(Оффтоп)

Это, например, базовая версия GeoGebra. В 4.5 есть и Питон, и CAS,
но я хочу использовать ту, что поддерживается сервером, и без JavaScript.
Ну, из принципа :twisted:

Нужно получить цифры десятичного представления числа в виде массива.
Операции типа floor(x) и log(b,x) имеются. Основная проблема - узнать количество цифр, чтобы запустить цикл нужной длины.
Для целой части числа -это просто $\lfloor lg(x) \rfloor$.
А вот что делать с дробной частью? Существует ли замкнутая формула для количества цифр дробной части числа?

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение09.07.2012, 17:59 
Аватара пользователя


27/02/12
3893
Я с этой средой незнаком... :-(
Там есть процедура или функция преобразования числа в строку,
к которой потом обращаться как к массиву символов? (это я по-паскалевски).

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение09.07.2012, 18:28 
Аватара пользователя


22/09/08
174
Да, есть операции с Unicode. Но мой вопрос не меркантильный..)))
Смысл не в том, чтобы решить любой ценой, а попытаться разобраться с дробной частью.
Например, моему сыну очень помогло освоить логарифмы упоминание, что
десятичный логарифм это в нек. смысле число цифр.
А я уже весь день думаю над дробной частью. Хочу формулу! :evil:
Список возможных операций:
http://wiki.geogebra.org/en/Predefined_Functions_and_Operators

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение09.07.2012, 18:36 
Заслуженный участник


11/05/08
32166
Lesobrod в сообщении #593810 писал(а):
Представим среду программирования, где нет конструкций While и Until, а только циклы фиксированной длины.

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

Трудно вообще обсуждать программные среды, гордо игнорирующие абсолютно необходимые и при этом весьма естественно реализуемые средства. А то вот я тоже могу подкинуть задачку: как реализовать операцию сложения двух чисел в предположении, что эта операция в той среде (или любом другом дне недели) не предусмотрена?...

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение09.07.2012, 18:48 
Аватара пользователя


27/02/12
3893
Lesobrod в сообщении #593820 писал(а):
попытаться разобраться с дробной частью.

Если есть оператор выхода из счетного цикла до его окончания (if имеется? :D ),
то можно последовательно умножать дробную часть на 10, пока она не "поцелеет".

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение09.07.2012, 19:06 
Аватара пользователя


22/09/08
174
Мда...Никто меня не понимает :cry:
Вот здесь
http://stackoverflow.com/questions/5314954/how-to-get-the-length-of-a-numbers-fraction-part
единственно похожая дискуссия.
И там лучший ответ использует перевод в текст ((. А нужна формула, и не очень громоздкая..
Надо было в общей математике спрашивать...

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение09.07.2012, 19:34 


01/07/08
836
Киев
Lesobrod в сообщении #593830 писал(а):
Мда...Никто меня не понимает :cry:



Видите ли, наш печальный Lesobrod, "все дело в том, что к сожаленью" существуют иррациональные числа в интервале (0.9,1). С уважением,

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение09.07.2012, 20:12 
Аватара пользователя


27/02/12
3893
Lesobrod в сообщении #593830 писал(а):
Мда...Никто меня не понимает

А Вы попробуйте понять следующее.
3 и 3000001 отличаются по количеству цифр на 6 и по величине на 6 порядков,
и это легко ловится.
А 0,3 и 0,3000001 отличаются по количеству цифр на 6, а по величине
практически равны, и это не лечится.

Впрочем, если хотите счетный цикл, берите байты, которые "среда" отводит
под число, делайте побитовый анализ, и Родина Вас... точно забудет! :mrgreen:

-- 09.07.2012, 19:13 --

Lesobrod в сообщении #593830 писал(а):
Надо было в общей математике спрашивать...

Да не поздно ещё...

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение09.07.2012, 20:30 
Аватара пользователя


22/09/08
174
Ну вот, теперь другое дело!
Трудности, которые указали miflin и hurtsy, и мне казались принципиальными.
Но после обсуждения на форуме никто (ну...собственно, из моих эго))),
не скажет, что задача сдана без боя.
В практическом плане остановился на JavaScript и удачном методе
Код:
function digits(n) { return ( n + “” ).length };

Можно, конечно, отдельно для целой и дробной частей посчитать.

А теоретически формула так и остаётся "синей птицей".
hurtsy в сообщении #593837 писал(а):
"все дело в том, что к сожаленью" существуют иррациональные числа в интервале (0.9,1),

Возможно ли отсюда доказать, что не существует замкнутой формулы с использованием только floor(), log(b,x) и арифметики?

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение09.07.2012, 20:36 


24/05/09

2054
Lesobrod в сообщении #593830 писал(а):
Мда...Никто меня не понимает :cry:

А вы напишите исходное число (с дробной частью), и готовый результат (из этого числа), который вы хотели бы получить. Может тогда станет понятно, что вы хотите.

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение09.07.2012, 21:06 
Аватара пользователя


27/02/12
3893
Alexu007 в сообщении #593859 писал(а):
Может тогда станет понятно, что вы хотите.

Что хотел ТС - понятно. И оно вполне решаемо.
Просто предлагаемые методы его не устраивали. Хотелось ему эдакого... :D

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение09.07.2012, 21:32 
Аватара пользователя


22/09/08
174
miflin в сообщении #593872 писал(а):
Хотелось ему эдакого... :D

Да, хотелось! :twisted:
"Эдаким", кстати, оказалась формулировка функции, не менее интересной, чем функция Дирихле. И чем больше думаю над тем, как выглядит длина дробной части числа на $\mathbb{R}$, тем веселее становится жить )))

Кстати, метод побитового анализа вполне подходит. Просто количество десятичных знаков в GeoGebra явно ограничено (это в Wolfram их сколько угодно; но там и RealDigits есть). Так что цикл можно сделать максимальной длины, а потом нули убрать.

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение09.07.2012, 22:04 


24/05/09

2054
Десятичное число из строки (неважно, сколько цифр):

n = FirstDigit
...
...
n = n *10
n = n + NextDigit

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение11.07.2012, 20:41 
Заслуженный участник


09/09/10
3729
Lesobrod в сообщении #593810 писал(а):
А вот что делать с дробной частью? Существует ли замкнутая формула для количества цифр дробной части числа?

Дробная часть содержит бесконечно много цифр, какая уж тут формула?

 Профиль  
                  
 
 Re: Количество цифр числа
Сообщение13.07.2012, 11:57 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
Lesobrod в сообщении #593810 писал(а):
Представим среду программирования, где нет конструкций While и Until, а только циклы фиксированной длины.

Ещё goto надо убрать, иначе при помощи if и goto Вы все эти конструкции сможете соорудить.

Функции, вычисление которых можно запрограммировать в такой среде - это, в точности, примитивно рекурсивные функции. Те функции, про которые Вы спрашиваете, примитивно рекурсивны :-)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group