Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти общую стоимость товаров, которые дороже 1000 рублей http://www.cyberforum.ru/cpp-beginners/thread1178267.html
Заданы, функцией rand(), стоимости товаров в группе. Найти общую стоимость товаров, которые дороже 1000 рублей (количество товаров не известно). Добавлено через 32 минуты help
C++ Создайте класс HugeInteger, который использует массив из 40 элементов для хранения целых чисел до 40 цифр Создайте класс HugeInteger, который использует массив из 40 элементов для хранения целых чисел, содержащих до 40 цифр. Создайте функции элементы inputHugeInteger, outputHugeInteger, addHugeIntegers и substractHugeIntegers для ввода, вывода, сложения и вычитания этих больших целых. Для сравнения объектов HugeInteger создайте функции isEqualTo (равно), isNotEqualTo (неравно), isGreaterThan... http://www.cyberforum.ru/cpp-beginners/thread1178266.html
Что будет находится в переменных a и b после выполнения следующего фрагмента C++
Что будет находится в переменных a и b после выполнения следующего фрагмента программы: int a=5, b=2; a*=a-b++;
C++ Вывести строку, обратную заданной
Собственно программа для того что бы вывести строку обратную данной. Я не могу догнать как она работает. Понятно до того момента как , " for (int j = 0; j <len / 2; j++) " , зачем мы количество символов в строке делим на 2 , и почему это является завершением для цикла ? #include <iostream> using namespace std; void main() { char str = "misha";
C++ Двунаправленный список строк: Определить три наиболее распространенных среди студентов имен http://www.cyberforum.ru/cpp-beginners/thread1178249.html
Нужно помочь с динамическими структурами данных: проблема в том, что я ничего не могу понять здесь у меня задача: "15.Сформуваты двунаправленный список строк, каждая из которых состоит из фамилии и имени студента. С помощью списка определить три наиболее распространенных среди студентов имен. " Я пробовал сначала не только с именами .... struct Node {
C++ В начало бинарного файла целого типа нужно дописать его минимальное значение, а в конец максимальное В начало бинарного файла целого типа нужно дописать его минимальное значение, а в конец максимальное. В общем я написал но оно почему то не пишет в конец максимальный элемент и вставляя минимальный заменяет одну цифру..Помоги пожалуйста. #include <stdio.h> #include <iostream> using namespace std; int poisk() { FILE *f; int i, n, *a; подробнее

Показать сообщение отдельно
mymedia
190 / 190 / 48
Регистрация: 27.05.2011
Сообщений: 543
16.05.2014, 20:51     Количество цифр в вещественном (!) числе
Всем привет!
Пытаюсь решить такую задачу, но для дробных чисел ничего не получается С целыми числами всё норм.
Нужно посчитать к-во цифр в данном числе (тип 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 минут
Помогите, пожалуйста!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru