Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Etete
0 / 0 / 1
Регистрация: 27.12.2010
Сообщений: 40
1

Приведение типов

02.12.2012, 22:29. Просмотров 385. Ответов 5
Метки нет (Все метки)

При вводе с клавиатуры s = 11 и a = 1.1, получаем 9.
Результат переменной d = 10, это правильно. В чём подвох?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
    double s;
    double a;
    cin >> s >> a;
    int c = s/a;
    int d = 11/1.1;
 
    cout << c << endl;
    cout << d << endl;
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2012, 22:29
Ответы с готовыми решениями:

Приведение типов
Доброго времени суток. Есть вопрос. Допустим: class Base { ..... }...

Приведение типов
Добрый вечер! Реализовываю явное и не явное приведение типов. Есть два...

Приведение типов
в GUI ни int str = static_convert&lt;int&gt;(Edit1-&gt;Text) ни int str =...

Приведение типов
Уважаемые программеры, ПОМОГИТЕ!!! Нужно (мне) реализовать шаблонную функцию...

приведение типов
Объясните, пожалуйста, почему возникает такая ошибка: error C2666: 'operator...

5
Boshop
13 / 13 / 5
Регистрация: 25.09.2012
Сообщений: 122
02.12.2012, 22:43 2
Скомпилировал твой код в обоих случаях 10. Может у тебя с компилятором что то не то?
0
I.M.
567 / 550 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
02.12.2012, 22:45 3
В VS2012 ошибка не воспроизводится
скорее всего, происходит следующее:
s/a выдает 9.999999...
а затем это число ошибочно переводится в 9, отбрасывая при этом дробную часть
0
Etete
0 / 0 / 1
Регистрация: 27.12.2010
Сообщений: 40
02.12.2012, 22:46  [ТС] 4
А чего он выводит 9.99999, раз тут нацело делится?
0
I.M.
567 / 550 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
02.12.2012, 22:48 5
Etete, double в памяти обычно хранится не точно, а с погрешностью Поэтому даже 11, это и не 11 вовсе, а, например, 11.0000001

Добавлено через 41 секунду
В любом случае, программа не должна возвращать 9 в этом примере
0
Etete
0 / 0 / 1
Регистрация: 27.12.2010
Сообщений: 40
02.12.2012, 22:52  [ТС] 6
int отсекает значит остальные девятки, т.к если у d тип double, при вычислении = 10.
0
02.12.2012, 22:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2012, 22:52

Приведение типов.
Доброго времени суток! В общем, есть класс Matrix(прямоугольные над полем...

Приведение типов
В паскале можно привести типы: type ts = 0..9; chislo = array of ts;...

Приведение типов
Есть ли какая-нибудь разница в следующих выражениях: float a = 123.4f ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru