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

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
ymniktm
3 / 3 / 1
Регистрация: 04.07.2014
Сообщений: 55
#1

В поисках логики - C++

22.10.2014, 14:40. Просмотров 1325. Ответов 41
Метки нет (Все метки)

Проблема известная но окончательного ответа я так и не нашел...

int a,b;
a=(0.1+0.7)*10;
b=(0.1+0.8)*10;
cout << a << ' ' <<b;
// 7 9
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,537
23.10.2014, 08:40     В поисках логики #41
Результат твоего примера: 8, 8, 8, 7, 7, 7, 7, 7.
Почему все double показывают 7, а не 8?.. Ведь double дробный тип.. Значит double не применяет >0.5 логику?
Цитата Сообщение от taras atavin Посмотреть сообщение
в третьей и последней округляется не по правилам double только результат
Какое это "правило double", если оно не округляет вообще..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2014, 08:46     В поисках логики
Еще ссылки по теме:

C++ Алгебра логики
Создайте функцию, которая просматривает массив из 10 целых чисел в поисках одинаковых значений. Все найденн C++
Нужно объяснить выражение return (A > B) ? A : B; в выражениях логики C++
C++ Упрощение выражений алгебры логики
Разделение данных и логики и ООП C++

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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
23.10.2014, 08:46     В поисках логики #42
Цитата Сообщение от Izual Посмотреть сообщение
Результат твоего примера: 8, 8, 8, 7, 7, 7, 7, 7.
Почему все double показывают 7, а не 8?.. Ведь double дробный тип.. Значит double не применяет >0.5 логику?
Дело не в этом.
C++
1
2
int a;
a=(double)((long double)0.1+(long double)0.7)*(long double)10.0;
. Эту логику не к чему применять, тех цифр просто нет. А вот при приведении к дроби меньшей разрядности уже работает округление. И если один раз результат округлить вверх, то дальше всегда будет получаться 0.8.
Yandex
Объявления
23.10.2014, 08:46     В поисках логики
Ответ Создать тему
Опции темы

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