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

Непонятный результат при математических операциях - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Используя производные классы, определить класс упорядоченного списка. Применить его для построения списка объектов типа Текстовая строка http://www.cyberforum.ru/cpp-beginners/thread1034397.html
Используя производные классы, определить класс упорядоченного списка. Применить его для построения списка объектов типа Текстовая строка.
C++ проигрыватесь с++ не могу найти код самого простого поигривателя на с++ ?! http://www.cyberforum.ru/cpp-beginners/thread1034396.html
метод обратной прогонки C++
Нужно реализовать метод обратной прогонки на с++.МОЖНО ВЗЯТЬ ЛЮБОЙ ПРИМЕР.КТО МОЖЕТ ПОМОГИТЕ!!
C++ Алфавит и сравнение слов
не понял такой вещи a, b, c, d if ("dd" < "cc") cout << "cc > dd" <<'\n'; if ("aa" < "bb") cout << "bb > aa" <<'\n'; Почему?
C++ Двумерные массивы.(доработка) http://www.cyberforum.ru/cpp-beginners/thread1034348.html
Вообщем очень прошу вашей небольшой помощи вот с таким заданием: Дана целочисленная квадратная матрица. Определить: 1) количество строк, не содержащих ни одного нулевого элемента; минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы. 1-ое я уже сделал.
C++ Объект задается чертежом Объект задается чертежом: вводятся координаты концов отрезков (вводить по одному отрезку) в динамический массив. Необходим подсчет длины всех отрезков с учетом масштаба (в конце программы выводится сообщение "какой масштаб применить?" и вводится значение: 2; 2.5; 4 или 10) Число узловых точек до 120. Очень прошу помощи.. в долгу не останусь.. подробнее

Показать сообщение отдельно
Bino321
2 / 2 / 0
Регистрация: 22.11.2013
Сообщений: 31
09.12.2013, 15:16     Непонятный результат при математических операциях
Помогите пожалуйста. Столкнулся с непонятной фигней и непойму ее причину...
Простая программа, выделяющая дробную часть, но результат неожиданный...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    double a=12345.20;
    int b,c;
    b=a;
    c=(a-b)*100;
    cout<<c<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
Если а=12345.20 то с=20 (это правильно). Но если написать а=12345.32 то с=31. И такое не только при значении а=12345.32... много значений дробной части при которой получается непонятный результат (на 1 меньше нужного) почему так?
Думал что это из-за неявных преобразований, но почему именно такой результат и только при некоторых значениях дробной части - непойму.
Тестировал на visual c++ 2010 и на dev-c++ - результат одинаков
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru