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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MrAndrey_ka
 Аватар для MrAndrey_ka
77 / 77 / 2
Регистрация: 13.05.2009
Сообщений: 536
Записей в блоге: 1
#1

При присвоении числа float появляется хвост! - C++

15.05.2009, 16:07. Просмотров 732. Ответов 5
Метки нет (Все метки)

присваеваю переменной Float 1.44 получаю 1,44000005722046
может FloatToStr работает некоректно?
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
26
27
class computer 
 
{
public:
   computer(char *, int, float);
   String Text(void);
private:
   char name[64];
   int hard_disk;
   float floppy;
};
 
computer::computer(char *name,int hard_disk,float floppy,)
{  strcpy(computer::name, name);
   computer::hard_disk = hard_disk;
   computer::floppy=floppy;}
 
String computer::Text(void)
{return "Название: "+String(name)+"\nВинчестер: "+IntToStr(hard_disk)+
"GB\nВлоппи "+FloatToStr(floppy);
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
computer my_pc("Compaq", 250, 1.44);
ShowMessage(my_pc.Text());
}
В итоге программа выдает строку:
Название: Compaq
Винчестер: 250GB
Влоппи 1,44000005722046 \\а вот почему тут не 1,44 не пойму
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2009, 16:07     При присвоении числа float появляется хвост!
Посмотрите здесь:

C++ 2-ичное представление числа типа double или float?
Целые числа типа float C++
Почему при преобразования из float в double коверкается число? C++
Ошибка при присвоении значения элементу массива в функции C++
Ошибка при присвоении(список) C++
C++ Ввод числа без точки в float
Почему конструктор вызывается при присвоении объекта другому объекту C++
При выполнении разных операций с MS VS2013, например, при закрытии, иногда появляется ошибка C++
C++ Мусор при присвоении оператора +
C++ Усечение константного значения при присвоении значений объектам структуры
Из числа float получить два int-a: целую и дробную части C++
Ошибка при присвоении числа переменной C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8507 / 2174 / 61
Регистрация: 07.03.2007
Сообщений: 10,848
Завершенные тесты: 1
15.05.2009, 16:33     При присвоении числа float появляется хвост! #2
используй FloatToStrF, просто есть такая беда с числами с плавающей запятой
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
15.05.2009, 16:42     При присвоении числа float появляется хвост! #3
MrAndrey_ka,
может FloatToStr работает некоректно?
всё правильно. числа с плавающей запятой невозможно точно представить в машинном виде, поэтому используется приближенное представление.
отсюда кстати, вытекает правило что нельзя напрямую сравнивать два вещественных числа.
MrAndrey_ka
 Аватар для MrAndrey_ka
77 / 77 / 2
Регистрация: 13.05.2009
Сообщений: 536
Записей в блоге: 1
15.05.2009, 16:46  [ТС]     При присвоении числа float появляется хвост! #4
Цитата Сообщение от Rififi Посмотреть сообщение
всё правильно. числа с плавающей запятой невозможно точно представить в машинном виде, поэтому используется приближенное представление.
и какова погрешность представления?
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
15.05.2009, 16:49     При присвоении числа float появляется хвост! #5
MrAndrey_ka,
и какова погрешность представления?
FLT_EPSILON, DBL_EPSILON
Gosha_Dubinin
 Аватар для Gosha_Dubinin
35 / 12 / 3
Регистрация: 06.05.2009
Сообщений: 215
15.05.2009, 17:08     При присвоении числа float появляется хвост! #6
тип данных float такой и есть, попробуй подключи longdubl
Yandex
Объявления
15.05.2009, 17:08     При присвоении числа float появляется хвост!
Ответ Создать тему
Опции темы

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