2014 dxdy logo

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

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




На страницу 1, 2  След.
 
 Количество цифр числа
Сообщение09.07.2012, 17:54 
Аватара пользователя
Представим среду программирования, где нет конструкций While и Until, а только циклы фиксированной длины.

(Оффтоп)

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

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

 
 
 
 Re: Количество цифр числа
Сообщение09.07.2012, 17:59 
Аватара пользователя
Я с этой средой незнаком... :-(
Там есть процедура или функция преобразования числа в строку,
к которой потом обращаться как к массиву символов? (это я по-паскалевски).

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

 
 
 
 Re: Количество цифр числа
Сообщение09.07.2012, 18:36 
Lesobrod в сообщении #593810 писал(а):
Представим среду программирования, где нет конструкций While и Until, а только циклы фиксированной длины.

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

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

 
 
 
 Re: Количество цифр числа
Сообщение09.07.2012, 18:48 
Аватара пользователя
Lesobrod в сообщении #593820 писал(а):
попытаться разобраться с дробной частью.

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

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

 
 
 
 Re: Количество цифр числа
Сообщение09.07.2012, 19:34 
Lesobrod в сообщении #593830 писал(а):
Мда...Никто меня не понимает :cry:



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

 
 
 
 Re: Количество цифр числа
Сообщение09.07.2012, 20:12 
Аватара пользователя
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 
Аватара пользователя
Ну вот, теперь другое дело!
Трудности, которые указали miflin и hurtsy, и мне казались принципиальными.
Но после обсуждения на форуме никто (ну...собственно, из моих эго))),
не скажет, что задача сдана без боя.
В практическом плане остановился на JavaScript и удачном методе
Код:
function digits(n) { return ( n + “” ).length };

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

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

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

 
 
 
 Re: Количество цифр числа
Сообщение09.07.2012, 20:36 
Lesobrod в сообщении #593830 писал(а):
Мда...Никто меня не понимает :cry:

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

 
 
 
 Re: Количество цифр числа
Сообщение09.07.2012, 21:06 
Аватара пользователя
Alexu007 в сообщении #593859 писал(а):
Может тогда станет понятно, что вы хотите.

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

 
 
 
 Re: Количество цифр числа
Сообщение09.07.2012, 21:32 
Аватара пользователя
miflin в сообщении #593872 писал(а):
Хотелось ему эдакого... :D

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

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

 
 
 
 Re: Количество цифр числа
Сообщение09.07.2012, 22:04 
Десятичное число из строки (неважно, сколько цифр):

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

 
 
 
 Re: Количество цифр числа
Сообщение11.07.2012, 20:41 
Lesobrod в сообщении #593810 писал(а):
А вот что делать с дробной частью? Существует ли замкнутая формула для количества цифр дробной части числа?

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

 
 
 
 Re: Количество цифр числа
Сообщение13.07.2012, 11:57 
Аватара пользователя
Lesobrod в сообщении #593810 писал(а):
Представим среду программирования, где нет конструкций While и Until, а только циклы фиксированной длины.

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

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

 
 
 [ Сообщений: 19 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group