Форум программистов, компьютерный форум, киберфорум
Наши страницы

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
Здравствуйте, приложил программу, картинка выходит за пределы окна, как это избежать? Итог должен получится такой, изображение должно поворачиваться под случайный угол не выходя за пределы окна. В...
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. Просмотров 310. Ответов 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
Собственно вопрос в заголовке темы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru