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

Printf лжет при выводе чисел с плавающей точкой? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа для предотвращения запуска определенных процессов во время работы приложения http://www.cyberforum.ru/cpp/thread1645344.html
Доброго времени суток. Я мало знаком с программированием в целом, и мне нужна помощь, может какие конкретные инструкции. Если точнее, то нужна программа, которая будет блокировать запуск определенных процессов в тот момент, когда запущено конкретное приложение
C++ Искусственный интеллект для мобов Доброго времени суток. Мне нужно написать искусственный интеллект для мобов в игре-платформере. Что можете посоветовать? С чего начать? О чем именно почитать гайды? http://www.cyberforum.ru/cpp/thread1645180.html
C++ Ошибка "неопределенная ссылка" при работе с std::thread
При попытке сделать что-либо с std::thread, выдает ошибку компиляции, "неопределенная ссылка " . К примеру: #include <iostream> #include <chrono> #include <thread> #include <mutex>
C++ Сравнение двух предложений по смыслу
Необходимо сравнить два коротких предложения по смыслу. Я так понимаю, нужно семантическое сравнение предложений. Как его можно реализовать? Есть какие-то бесплатные библиотеки?
C++ OpenCV с изображениями http://www.cyberforum.ru/cpp/thread1641813.html
Здравствуйте, приложил программу, картинка выходит за пределы окна, как это избежать? Итог должен получится такой, изображение должно поворачиваться под случайный угол не выходя за пределы окна. В лучшем случае если изображение поворачивается без фона, только объект(по бинарной маске) #define _CRT_SECURE_NO_WARNINGS #include "stdafx.h" #include <cv.h> #include <highgui.h> #include...
C++ Не работает IplImage* Добрый день. Пытаюсь скомпилировать вот такой код: #include <cv.h> #include <highgui.h> #include <stdlib.h> #include <stdio.h> #include "stdafx.h" IplImage* image = 0; IplImage* src = 0; подробнее

Показать сообщение отдельно
Danvern
40 / 39 / 3
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1

Printf лжет при выводе чисел с плавающей точкой? - C++

23.01.2016, 08:32. Просмотров 272. Ответов 6
Метки (Все метки)

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
void doubleToString(double v, char * str){
    if(v < 0) {
        *str = '-';
        v = -v;
    }
    int number = static_cast<int>(v);
    double exp = v - static_cast<double>(number);
    const char * digits = "0123456789";
    char strExp[32] = {0};
    char * p = strExp;
    exp *= 10.0;
    do {
        *p++ = digits[static_cast<int>(exp) % 10];
        exp -= static_cast<double>(static_cast<int>(exp));
        printf("%.10lf %lf\n", exp, static_cast<double>(static_cast<int>(10 * exp)));
        exp *= 10.0;
    } while(static_cast<int>(exp) != 0);
    
    char strNum[32] = {0};
    p = strNum;
    do {
        *p++ = digits[(number % 10)];
        number = number / 10;
    } while(number != 0);
    
    int length = strlen(strNum);
    for(int i = 0; i < length / 2; ++i) {
        char c = strNum[i];
        strNum[i] = strNum[length - i - 1];
        strNum[length - i - 1] = c;
    }
    p = strNum;
    while(*p) {
        *str++ = *p++;
    }
    *str++ = '.';
    
    p = strExp;
    while(*p) {
        *str++ = *p++;
    }
    
}
 
int main() {
    char buf[64] = {0};
    double v = 1.23;
    doubleToString(v, buf);
    printf("ret= %s %lf\n", buf, v);
    return 0;
}
Вывод:
Код
1.0000000000 9.000000
1.0000000000 9.000000
1.0000000000 9.000000
1.0000000000 9.000000
0.9999999998 9.000000
0.9999999982 9.000000
0.9999999822 9.000000
0.9999998224 9.000000
0.9999982236 9.000000
0.9999822364 9.000000
0.9998223643 9.000000
0.9982236432 9.000000
0.9822364316 9.000000
0.8223643161 8.000000
0.2236431606 2.000000
0.2364316060 2.000000
0.3643160600 3.000000
0.6431605997 6.000000
0.4316059975 4.000000
0.3160599750 3.000000
0.1605997495 1.000000
0.6059974954 6.000000
0.0599749535 0.000000
ret= 1.2299999999999999822364316 1.230000
Собственно вопрос в заголовке темы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru