Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/40: Рейтинг темы: голосов - 40, средняя оценка - 4.95
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545

Количество цифр в вещественном (!) числе

16.05.2014, 20:51. Показов 8438. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Пытаюсь решить такую задачу, но для дробных чисел ничего не получается С целыми числами всё норм.
Нужно посчитать к-во цифр в данном числе (тип double). Если число дробное, десятичную зяпятую не считать. Если число неотрицательное, знак не считать.
Вариант 1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template<class T>
int getLendth(T num)
{
    using namespace std;
    T full; // целая часть
    T fract = modf(num, &full); // дробная часть
 
    const int full_count = floor(log10(full))+1;    // к-во цифр в целой части
 
// ***
    int exp;
    T mant2 = frexp(fract, &exp);   // ДВОИЧНАЯ МАНТИССА
    const int fract_count = mant2/fract * pow(2,exp);   // к-во цифр в дробной части
// ***
 
    const int sign_count = num >= 0 ? 0 : 1;    // есть ли знак
    return full_count+fract_count+sign_count;
}

Вариант 2
C++
1
2
3
4
5
6
7
8
9
10
template<class T>
int getLendth(T num)
{
    using namespace std;
    stringstream s_stream;
    string s_string;
    s_stream << num;
    s_stream >> s_string;
    return s_string.size() - ( ceil(num)-floor(num) ? 1 : 0 );  
}

В принципе, меня вполне устраивает второй вариант, но если в числе более шести цифр, то число записывается в экпоненциальном ввиде, а как это отключить, я не знаю. Есть манипулятор scientific, который принудительно включает экспоненциальный формат вывода, но почему-то нет обратного
P.S.: в обоих случаях шаблоны инстанцируются с T = double

Добавлено через 5 минут
Помогите, пожалуйста!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.05.2014, 20:51
Ответы с готовыми решениями:

Подсчитать количество цифр после запятой в вещественном числе
Доброго времени суток. Подскажите, пожалуйста, как посчитать кол-во цифр после запятой? Например в числе 5.4569 -4 знака после запятой. В...

Определить количество значимых цифр в вещественном числе со знаком
Дано вещественное число, определить количество значимых цифр в вещесвенном числе со знаком.

Подсчет количества цифр в вещественном числе
Насколько я понял, сделать это можно лишь с переводом в строковый тип, а вот сделать никак не могу. И да, вещественное число не вводится...

1
 Аватар для Vandris
66 / 65 / 29
Регистрация: 19.01.2011
Сообщений: 94
16.05.2014, 22:56
Цитата Сообщение от mymedia Посмотреть сообщение
но почему-то нет обратного
Ну как же нет, если есть?) Только забегая вперед, скажу что он Вам не всегда поможет
C++
1
2
3
4
5
6
7
double test = 1.0 / 1000000000.0;
 
std::cout << test << "\n";                    // 1e-009
std::cout.setf(std::ios::fixed);              
std::cout << test << "\n";                    // 0.000000
std::cout.unsetf(std::ios::fixed);
std::cout << test << "\n";                    // 1e-009
Выводимое количество знаков после запятой регулируется так:
C++
1
2
std::cout.setf(std::ios::fixed);
std::cout << std::setprecision(9) << test << "\n";           //0.000000001
Но такой трюк сработает не со всеми числами. Дело в том, что тип double хранит 15-17 значащих цифр (видимо дело в двоичном представлении числа и его округлении). Причем не важно, до запятой или после.

C++
1
2
3
4
double test = 10000000000.111111;
 
std::cout.setf(std::ios::fixed);
std::cout << std::setprecision(9) << test << "\n";      // 10000000000.1111110687
Так что, я бы на Вашем месте наверно умножал на 10 до тех пор, пока 15 цифр не окажутся до запятой, потом взять целую часть, убрать лишние нули в конце, и уже тогда считать цифры.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.05.2014, 22:56
Помогаю со студенческими работами здесь

В вещественном числе определить, равны ли суммы цифр целой и дробной части
Дан текстовый файл с неизвестным количеством вещественных чисел. Написать функцию для определения есть ли среди них число у которого...

Вывести на экран количество цифр в заданном числе и сумму этих цифр
я начинающий! помогите! мне на екзам! Дано натуральное число а (a&lt;100). Напишите программу, выводящую на экран количество цифр в этом...

Определить количество цифр в числе n и сумму всех его цифр
Дано натуральное n , определить количество цифр в числе n и сумму всех его цифр. Значение n ввести с клавиатуры. Добавлено через...

Рекурсия: количество цифр в числе, сумма цифр и реверс числа
Вот задание: Написать программу, которая запрашивает у пользователя целое число, на экран выводит сколько цифр в числе, их сумму и...

С клавиатуры вводится положительное натуральное число. Определить количество цифр в числе (сумму цифр)
С клавиатуры вводится положительное натуральное число. Определить количество цифр в числе (сумму цифр)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru