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

перевод действительных чисел - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ найти плошадь и катет прямоугольного треугольника http://www.cyberforum.ru/cpp-beginners/thread778657.html
Помогите пожалуйсто найти площадь и катет у прямоугольного треугольника используя второй катет и гипотенузу.
C++ найти площадь ромба Помогите. задание, ввести одну сторону ромба и диагональ http://www.cyberforum.ru/cpp-beginners/thread778642.html
Перевод из одной С.С. в другую C++
Как можно организовать при помощи ОДНОЙ функции, в которую вводится само число и система счисления?
Как получить состояние (release/debug) проекта? C++
Возможно ли получить состояние (release/debug) проекта препроцессором?
C++ Обьясните пожалуйста что делает эта программа http://www.cyberforum.ru/cpp-beginners/thread778609.html
#include <iostream> using namespace std; int main (void) { unsigned char a=(int)127; a<<=2; a&=52; a|=3; a<<=2; cout <<"\n a = "<<(int)a<<"\n";
C++ числовой тип данных для 123456789123.123456789123 Какой тип данных нужно взять, что бы проводить математические операции с большими, дробными числами? Что бы не было 123.1+0.1535*10^6 к примеру... подробнее

Показать сообщение отдельно
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
04.02.2013, 17:36     перевод действительных чисел
вот набросал, но код немного нехороший

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
#include <iostream>
#include <string>
 
std::string FloatToBin(const double x)
{
    std::string ret;
    unsigned int z = x;
    double r = x-z;
    
    // тут переводится целая часть
    while (z!=0)
    {
        ret=(char)(z%2+0x30)+ret; 
        z=z/2;
    }
    
    int counter=0;
    //тут дробная
    if (r!=0) ret+=".";
    while (r!=0)
    {
        z=r*2;
        ret+=(char)(z+0x30);
        r=r*2-z;
        ++counter;
        if (counter==10) // тут понимаем, процесс затянулся и число может быть вообще иррационально, поставим точки
          {
              ret+="...";
              break;
          }
    }
    return ret;
}
 
int main()
{
    std::string s;
    s = FloatToBin(123.625);
    std::cout << s << std::endl;
    return 0;
}
 
Текущее время: 02:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru