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

Неточность конвертера валюты - C++

Восстановить пароль Регистрация
 
Surges
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 42
04.06.2013, 16:50     Неточность конвертера валюты #1
Вопрос наверное, такой нубский, но автор видеоуроков мне в скайпе не отвечает и я хочу спросить у вас.
В чем проблема? Точность в конвертере подхрамывает. Если, например, в 1000 рублях 23.9998 евро, то он выводит 24, а если 23.22134 то выводит просто 23.
----
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
#include <iostream>
#include <conio.h>
 
   using std::cout;                                                         
   using std::cin;                                                          
   using std::endl;                                                        
 
int main()
{
 
    setlocale(LC_ALL, "Russian");
 
    int rub;                                                               
    int euro;                                                              
    int dollar;                                                            
    unsigned long long belrub;                                             
    int ce = 0.024;                                                        
    int cd = 0.0312;                                                       
    unsigned long long cb = 271.1497;                                      
 
    cout << "Введите количество рублей:";
    cin >> rub;                                                            
 
    euro = (double)rub * (double)ce;                                      
    dollar = (double)rub * (double)cd;                                     
    belrub = (unsigned long long)rub * (unsigned long long)cb;            
    
    cout << "\n\nЭто " << euro << " евро.\n";
    cout << "Это " << dollar << " доллара.\n";
    cout << "Это " << belrub << " белорусских рублей.\n";
 
 
    getch();
   return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sinewy
3 / 3 / 0
Регистрация: 02.06.2013
Сообщений: 14
04.06.2013, 16:56     Неточность конвертера валюты #2
Замените типы на double
Surges
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 42
04.06.2013, 16:58  [ТС]     Неточность конвертера валюты #3
Цитата Сообщение от Sinewy Посмотреть сообщение
Замените типы на double
Заменил. Точность повыше, но всеравно, не со 100% точностью. Можно ли немного поточнее?
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
04.06.2013, 17:01     Неточность конвертера валюты #4
Цитата Сообщение от Surges Посмотреть сообщение
C++
1
2
int ce = 0.024; * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * int cd = 0.0312;
Тоже double

Добавлено через 47 секунд
Цитата Сообщение от Surges Посмотреть сообщение
C++
1
unsigned long long cb = 271.1497;
и это тоже
Surges
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 42
04.06.2013, 17:02  [ТС]     Неточность конвертера валюты #5
Все типы заменил на дабл, кроме int main.

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
/*
///////////////////////////////////
by Small Virgin                  //
be free                          //
///////////////////////////////////
*/
#include <iostream>
#include <conio.h>
 
   using std::cout;                                                         // Возможность cout ходить без std
   using std::cin;                                                          // С
   using std::endl;                                                        // Сокращение std::endl
 
int main()
{
 
    setlocale(LC_ALL, "Russian");
 
    double rub;                                                               //Рубли
    double euro;                                                              //Евро
    double dollar;                                                            //Доллар
    double belrub;                                             //Белорусский рубль
    double ce = 0.024;                                                        //В одном рубле столько евро
    double cd = 0.0312;                                                       // В одном рубле столько долларов
    double cb = 271.1497;                                      // В одном рубле столько белорусских рублей
 
    cout << "Введите количество рублей:";
    cin >> rub;                                                            //  Здесь я ввожу кол-во рублей для конвертера валюты
 
    euro = (double)rub * (double)ce;                                       //Вычисления евро
    dollar = (double)rub * (double)cd;                                     //Вычисление доллара
    belrub = (unsigned long long)rub * (unsigned long long)cb;             // Вычисление белорусского рубля
    
    cout << "\n\nЭто " << euro << " евро.\n";
    cout << "Это " << dollar << " доллара.\n";
    cout << "Это " << belrub << " белорусских рублей.\n";
 
 
    getch();
   return 0;
}
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
04.06.2013, 17:04     Неточность конвертера валюты #6
Не стоит использовать double для финансовых операций.
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
04.06.2013, 17:04     Неточность конвертера валюты #7
Цитата Сообщение от Surges Посмотреть сообщение
C++
1
2
3
euro = (double)rub * (double)ce; * * * * * * * * * * * * * * * * * * * //Вычисления евро
* * dollar = (double)rub * (double)cd; * * * * * * * * * * * * * * * * * * //Вычисление доллара
* * belrub = (unsigned long long)rub * (unsigned long long)cb; * * * * * * // Вычисление белорусского рубля

C++
1
2
3
euro = rub * ce; * * * * * * * * * * * * * * * * * * * //Вычисления евро
dollar = rub * cd; * * * * * * * * * * * * * * * * * * //Вычисление доллара
belrub = rub * cb; * * * * * * // Вычисление белорусского рубля
Surges
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 42
04.06.2013, 17:04  [ТС]     Неточность конвертера валюты #8
Цитата Сообщение от Ezembi Посмотреть сообщение
Тоже double

Добавлено через 47 секунд

и это тоже
Заменил, точность подросла. Теперь она где-то 85%. Но как сделать 100% ? Чтобы не 31,2 а 31,2025 ?
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
04.06.2013, 17:07     Неточность конвертера валюты #9
Цитата Сообщение от Surges Посмотреть сообщение
Заменил, точность подросла. Теперь она где-то 85%. Но как сделать 100% ? Чтобы не 31,2 а 31,2025 ?
C
1
printf("\n\nЭто %lf евро.\n",euro);
Surges
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 42
04.06.2013, 17:13  [ТС]     Неточность конвертера валюты #10
Цитата Сообщение от Ezembi Посмотреть сообщение
C
1
printf("\n\nЭто %lf евро.\n",euro);

В евро появились лишние нули, но в долларах 31.2 осталось также.
Миниатюры
Неточность конвертера валюты  
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
04.06.2013, 17:16     Неточность конвертера валюты #11
Цитата Сообщение от Surges Посмотреть сообщение
В евро появились лишние нули, но в долларах 31.2 осталось также.
После? :
C
1
printf("\n\nЭто %lf
Добавлено через 31 секунду
везде на printf заменили?
Surges
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 42
04.06.2013, 17:21  [ТС]     Неточность конвертера валюты #12
Цитата Сообщение от Tulosba Посмотреть сообщение
Не стоит использовать double для финансовых операций.
ну а как тогда быть? ваши предложения?
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
04.06.2013, 17:24     Неточность конвертера валюты #13
0.0312*1000=31,2 не?

Добавлено через 1 минуту
0.024*1000=24,0 не?

Добавлено через 1 минуту
у вас коэффициенты неточные
Surges
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 42
04.06.2013, 17:26  [ТС]     Неточность конвертера валюты #14
Цитата Сообщение от Ezembi Посмотреть сообщение
После? :
C
1
printf("\n\nЭто %lf
Добавлено через 31 секунду
везде на printf заменили?
Заменил теперь везде на printf . И теперь в долларах и бел. рублей появились лишние нули.

Добавлено через 1 минуту
Цитата Сообщение от Ezembi Посмотреть сообщение
0.0312*1000=31,2 не?

Добавлено через 1 минуту
0.024*1000=24,0 не?

Добавлено через 1 минуту
у вас коэффициенты неточные
Омг. Значит, конвертер майл ру подвел. Через калькулятор так, как вы написали. Извините.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2013, 17:27     Неточность конвертера валюты
Еще ссылки по теме:

C++ Написать программу пересчет валюты, курс валюты
C++ Программа перевода рублей в евро с возможностью изменения курса валюты
Выполнить перевод из одной валюты в другую по указанному курсу C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
04.06.2013, 17:27     Неточность конвертера валюты #15
Цитата Сообщение от Surges Посмотреть сообщение
Омг. Значит, конвертер майл ру подвел. Через калькулятор так, как вы написали. Извините.
Бывает
Yandex
Объявления
04.06.2013, 17:27     Неточность конвертера валюты
Ответ Создать тему
Опции темы

Текущее время: 01:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru