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

Как из числа double 4.056 извлечь число 1000? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ как повернуть матрицу http://www.cyberforum.ru/cpp-beginners/thread603539.html
Было . 8 0 .==== чтобы так стало 7 7 . 7 7. ==== 0 8
C++ Вычислить остаток счета депозита банка Изначально название темы 'Напишите программу' - Прим. LK. В финансовой расчетной программе необходимо вычислить остаток счета депозита банка после указанного количества месяцев. Создать класс DepKonts в котором переменные: номер счета(символьная строка), начальная сумма вклада, процентная ставка по дупозитам в процентах, количество лет. У класса должен быть конструктор, который позволяет... http://www.cyberforum.ru/cpp-beginners/thread603514.html
C++ Вывести следующую и предыдущую цифры
В символьную переменную вводится цифра. Вывести следующую и предыдущую цифры, считая, что за 9 следует 0, а, соответственно, нулю предшествует девятка. Правила3.15. Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.
как получить нажатия/отпускание клавиш? C++
Особенность задачи в том, что требуется отличать enter в цифровом блоке от основного enter, правый shift от левого, реагировать на alt и ctrl и отличать правые alt и ctrl от левых. Распознавание цифр и в цифровом блоке не должно зависеть ни от языка, ни от numlock. Кнопки insert, home, page up, delete, end, page down требуется всегда отличать от кнопок цифрового блока.Решение нужно виндузячее, но...
C++ Дан двумерный массив целых чисел. Используя множественный тип данных set, составьте программу, позволяющую http://www.cyberforum.ru/cpp-beginners/thread603490.html
найти числа, содержащиеся во всех строках с четными номерами, но не входящие в нечетные строки массива помогите пожалуйста. очень надо (((
C++ Преобразуйте конструктор Дан класс MyString: class MyString { char *ps; int size,len; public: MyString(); MyString(int maxLength); ~MyString() { delete ps; } подробнее

Показать сообщение отдельно
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
28.06.2012, 21:05     Как из числа double 4.056 извлечь число 1000?
Из-за упомянутых уже особенностей представления дробных чисел задача практически нерешаемая. Без округлений тут ничего не выйдет. А с ними результат может и не быть похожим на ожидаемый.
Можно через строковое представление что-то получить, но этот метод тоже ограничен.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <math.h>
#include <string.h>
 
int main () {
    double x = 4.056;
    int n;
    char *ptr, str[20];
 
    sprintf(str, "%f", x);
    for (ptr = str; *ptr && *ptr != '.'; ++ptr)
        ;
 
    n = strlen(ptr);
    while (n > 0 && ptr[--n] == '0')
        ptr[n] = '\0';
 
    if (*ptr)
        *(ptr++) = '\0';
 
    for (; *ptr && *ptr == '0'; ++ptr)
        ;
 
    if (n > 0)
        printf("%f = %s + %s / %.0f\n", x, str, ptr, pow(10, n));
    else
        printf("%f is integer\n", x);
 
    return 0;
}
http://liveworkspace.org/code/740f41...1b1fc35f047f4f
 
Текущее время: 18:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru