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

Неверный результат при преобразования типов данных static_cast<int>(double) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Какая разница между разными объявлениями объектов? http://www.cyberforum.ru/cpp-beginners/thread1234960.html
чет 4 месяца не писал на С++ а писал на сшарпе немного. Но вот вернувшись к С++ чет вылетело с головы. Какая разница между обвявлением обьекта. Map map; и Map *asd; asd = new Map; Ясно...
C++ Задача по теме Двумерные массивы Помогите выбрать правильный вариант в этой задаче. Заранее спасибо. 1. Задачи необходимо переписывать в текст сообщения. 2. Язык форума русский http://www.cyberforum.ru/cpp-beginners/thread1234953.html
C++ Создание "особенного" дочернего окна
Здравствуйте, товарищи. Пару дней назад экспериментировал я с созданием дочерних окон главного окна и получил один интересный формат дочернего окна. Окно вело себя как отдельное, самостоятельное...
Не компилируется код C++
я написал код проверял не компелирует почему-то пользуюсь dev c++ пишет проект или исходный файл не скомпелирован вот код #include <iostream.h> #include <stdio.h> using namespace std; int...
C++ Получить список процессов http://www.cyberforum.ru/cpp-beginners/thread1234853.html
Как в c++ получить список процессов?
C++ Ошибка в учебнике или я неправильно понял? Учу с++ по самоучителю. Анализируя очередной код наткнулся на фразу (на фото). Ошибка ли это или я не правильно понял? Переменная n уменьшается на 1, если значение выражения (!(*str1))-true. А... подробнее

Показать сообщение отдельно
genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348

Неверный результат при преобразования типов данных static_cast<int>(double) - C++

27.07.2014, 18:22. Просмотров 605. Ответов 11
Метки (Все метки)

Доброго времени суток, уважаемые программисты!
Перейду сразу к сути проблемы:
При данном значении вещественной переменной n (n=0.13) в переменной целого типа m результат не 13, а 12. В чём проблема?
C++
1
2
3
double n=0.13;
 
int m = static_cast<int>(0.13*100);
А при n=0.133333 в переменной сохраняется 13...
Вот код самой программы:
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
#include <iostream>      
#include <windows.h>    
 
using namespace std;
 
int main(){
    setlocale(LC_ALL, "Russian");
 
    double sum;
    int celCh;
    double drobCh;
    int vPensah;
    //int funt, shil, pens;
    
    cout << "Введите сумму в новой денежной системе (например: 5.13): ";
    cin >> sum;
    celCh = static_cast<int>(sum);
    drobCh = sum - static_cast<double>(celCh);
    vPensah = celCh * 12 * 20 + static_cast<int>(drobCh*100);
     
    cout << celCh << endl << drobCh << endl << vPensah << endl;
 
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru