Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2012, 17:53   #1
guest45833
Новичок
Джуниор
 
Регистрация: 21.02.2012
Сообщений: 2
По умолчанию проблема с short и double

Всем привет!
Объясните нубу, почему в программе s получается = 0

Код:
#include <iostream>
using namespace std;

int main()
{
	short s; double d;
	d=-5.01;
	d=(d-(int)d)*100;
	cout<<d<<endl;
	s=d;
	cout<<s<<endl;
	system("pause"); return 0;
}
guest45833 вне форума Ответить с цитированием
Старый 21.02.2012, 21:30   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Число 0.01 нельзя точно сохранить в переменной, оно в двоичной системе содержит бесконечное число цифр после запятой. В d получается что-то типа -0.99999999999997868, то есть больше -1.
Somebody вне форума Ответить с цитированием
Старый 22.02.2012, 16:43   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

guest45833, то есть при присваивании:
Код:
s=d;
d переопределяется в short путём отбрасывания дробной части.

Если отбросить дробную часть числа:
Цитата:
-0.99999999999997868
Получится ноль.
8Observer8 вне форума Ответить с цитированием
Старый 23.02.2012, 14:40   #4
guest45833
Новичок
Джуниор
 
Регистрация: 21.02.2012
Сообщений: 2
По умолчанию

спасибо, понял!
guest45833 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с выводом типа double ArmanPrestige Общие вопросы C/C++ 3 20.02.2012 03:58
E2015 Ambiguity between 'std::log(double)' and 'std::log(long double)' Namolem Помощь студентам 3 02.04.2011 20:22
функция pow(double x, double y) Не могу понять в чем ошибка Vlashel Помощь студентам 3 07.10.2010 16:28
long double vs. double VoidMan Общие вопросы C/C++ 1 21.09.2009 18:45
Странная проблема при сложении double. Помогите разобраться. ivank Общие вопросы C/C++ 2 23.09.2008 13:04