0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 6
|
|
1 | |
Подсчитать количество цифр после запятой в вещественном числе23.05.2014, 13:53. Показов 56258. Ответов 21
Метки нет (Все метки)
Доброго времени суток. Подскажите, пожалуйста, как посчитать кол-во цифр после запятой?
Например в числе 5.4569 -4 знака после запятой. В программе присутствуют как все число n=5.4569,так и дробная часть n1=0.4569. Заранее спасибо
0
|
23.05.2014, 13:53 | |
Ответы с готовыми решениями:
21
Количество цифр в вещественном (!) числе Определить количество значимых цифр в вещественном числе со знаком Нужно отделить цифры после запятой в вещественном числе Оставить одну цифру, после запятой, в вещественном числе |
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 6
|
|
23.05.2014, 13:57 [ТС] | 3 |
С помощью чего это делать? size()?strlen()?Чего именно?
0
|
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
|
|
23.05.2014, 14:06 | 4 |
0
|
62 / 43 / 20
Регистрация: 28.09.2013
Сообщений: 193
|
|
23.05.2014, 14:15 | 5 |
dzrkot, itoa() переводит только из int не?
0
|
23.05.2014, 14:20 | 6 | |||||
Это только так кажется:
1
|
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 6
|
|
23.05.2014, 14:26 [ТС] | 7 |
Ого.Это конечно интересно. Но надо чтобы выводил 4.И c itoa() я совсем запуталась в конверсиях( оба числа типа double. на какой тип конвертировать)
0
|
Заблокирован
|
||||||
23.05.2014, 14:27 | 8 | |||||
Сообщение было отмечено Kolter как решение
Решение
0
|
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 6
|
|
23.05.2014, 14:43 [ТС] | 9 |
newbie666, спасибо, посижу,поразбираюсь
Добавлено через 10 минут Отлично все работает, огромное вам спасиииибо
0
|
3 / 3 / 0
Регистрация: 03.06.2019
Сообщений: 64
|
||||||
23.08.2019, 21:47 | 11 | |||||
Вот в-я, которая считает вполне нормально, но иногда долго:
0
|
Комп_Оратор)
|
|
23.08.2019, 23:33 | 13 |
Байт, вот страничка:
https://ru.wikipedia.org/wiki/IEEE_754-2008 Поскольку внутреннее представление 2-чное то в десятичном представлении 64 битное (дабл) по стандарту будет иметь 15-16 разрядов в мантиссе. Они пишут 15.95 (53 двоичных разряда дают то 15 то 16 10-тичных, в зависимости от значения !). Вопрос топика, недоизучен ТС и требует уточнения формулировки. Добавлено через 2 минуты NuMeRiC_, как вам удалось раскопать 2014 год? Раритет как-никак...
1
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
24.08.2019, 09:45 | 14 |
Зерно истины в этом есть. Но тогда и вопрос должен был быть поставлен по другому. Сколько десятичных знаков имеет тип double?
Хотя... Там говорится о знаках после запятой.... Значит для числа 5.4569 это будет 15(16) - 1 = 14(15) Что брать за "базу" - 15 или 16 - вопрос достаточно тонкий. Но таких "задач" на форуме встречалось довольно много. Что я отношу к идиотизму не столько ТС-ов, сколько преподавателей, слабо разбирающихся в данном вопросе. Добавлено через 6 минут В свое время мне пришлось создавать функцию "точного" представления плавающих чисел. Сделал просто. ПЕреводил в строку (sprinf(s, "%19f", d); и искал идущие подряд "000" или "999", которые отсекал. Числа 19 и 5 были назначены чисто волюнтаристски. Но заказчик был доволен и не брыкался
1
|
Комп_Оратор)
|
|
24.08.2019, 11:57 | 15 |
Конечно! Я же и говорю:
Мир удивительно стабилен, в некоторых своих проявлениях. По примеру топика речь о знаках в мантиссе вида a.bcde... где a - не ноль. А недетерминированное в числе знаков 10-чное представление проще всего решить отбросив 16. То есть, для 64-представления IEEE754 уверенно можно говорить о 15 для мантиссы. Так кажется. И три знака для экспоненты + знак самой экспоненты и знак числа экспоненты (песня, название песни, то о чём песня и звучащая песня). То есть e-301 - четыре знака. Стало быть строка для представления в char должна быть не менее 20=15+4 +1. Один - для десятичной точки. Но это для мантиссы с точкой и без ведущего нуля. То есть для человеческого глаза. А в формате где ноль - ведущий (в мантиссе вида 0.bcde...) перед первой значащей (не нулевой) после запятой, можно на точке съэкономить. Но не всем будет понятно. Добавлено через 44 минуты Байт, учитывая сказанное, я бы ответил на вопрос ТС так: Нужно получить столько значащих из матиссы сколько возможно. То есть, например, отбрасываем экспоненту и анализируем 15 ведущих знаков мантиссы для того чтобы выбросить сплошную, замыкающую группу нулей (если есть хоть один, - уже один знак отбросим). Тогда можно получить менее 15 10-чных цифр (значащих уже можно сказать) не изменив точность (с точностью до 16-го знака в некоторых случаях). То есть, если быть предельно точным, то нельзя быть предельно точным )))
1
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
||||||
24.08.2019, 23:51 | 16 | |||||
Копая нонче картошку на огороде (а она выдалась на диво - с кулак!), пришел, как мне кажется, к разумному решению. Что-то вроде этого
1
|
Комп_Оратор)
|
|
25.08.2019, 00:06 | 17 |
Да. Это точно. Вот допустим число выглядит так: 1.05808786500000e-305
То есть, я бы десятичный логарифм взял. Потом получил чистую мантиссу: 1.05808786500000. А потом уже проанализировал и отбросил 5 последних нулей: 1.058087865 и затем уже вернул порядок на место 1.058087865e-305. Ведь речь то может идти только о строковом десятичном представлении (моё предположение). Внутренне представление останется двоичным, а десятичное, числовое, всё едино будет дополнено нулями справа до 15 или 16 общих штук.
1
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
25.08.2019, 00:27 | 18 |
Золотые слова ваши! Но только эти. Имхо, все остальное к делу никакого касательства не имеют. И нули вы зря отбрасываете. Зачем? Ваше число имеет 305+15 = 320 знаков после запятой (если я не ошибся,, считая ваши циферки)
Мы анализируем только написанное, и нам плевать на то, что делает с этим комп, как он там разбирается с числом. Наше дело - строка. И более ничего. Добавлено через 5 минут IGPIGP, Понимаете, если написано 1.00000, то тут именно 5 знаков после запятой. И "в быту" это говорит о том, что измерения произведены именно с этой точностью.
1
|
Комп_Оратор)
|
|
25.08.2019, 01:21 | 19 |
Это как раз я и сказал там, где вы увидели золотые слова. То есть, смысл вопроса:
может присутствовать лишь если речь идёт о значащих цифрах. Последняя группа нулей к ним не относится и может быть отброшена. Это имеет смысл только в строковом представлении. А в компьютерном, даже ноль имеет 14(или 15?) знаков после запятой в мантиссе. И все нули, да. Это не удивительно. Ибо на этом зиждется храм бытия.
0
|
Комп_Оратор)
|
|
25.08.2019, 08:19 | 20 |
И ещё. Вот это
преувеличение. Программирование и математика порождают разные абстракции на одной и той же словарной (терминологической) базе. Тут важно, что имеет в виду человек, задающий тему. У ТС То есть, речь о типе данных с плавающей точкой (мы не знаем float или double или long double - вот это таки плохо) но не о числах с математической точки зрения. Мат-абстракция числа не имеет конечного представления в общем случае, не выражаемого функционально. Число Пи легко можно выразить как отношение длины окружности к диаметру, например. На этом легкость и заканчивается.
0
|
25.08.2019, 08:19 | |
25.08.2019, 08:19 | |
Помогаю со студенческими работами здесь
20
Как посчитать количество цифр в числе после запятой В строке имеется одна точка с запятой. Подсчитать количество символов до точки с запятой и после неё В строке имеется одна точка с запятой (;). Подсчитать количество символов до точки с запятой и после нее. Функция: подсчёт количества цифр после запятой в дробном числе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |