Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

15.05.2009, 16:07. Просмотров 798. Ответов 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 не пойму
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2009, 16:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос При присвоении числа float появляется хвост! (C++):

Ошибка при присвоении числа переменной - C++
Доброго времени суток. На днях дали задание написать алгоритм RSA. Вроде бы он легкий и понятный и ничего не предвещало беды.НО!!! Мой...

Мусор при присвоении оператора + - C++
программа по подсчету времени. Сумируются 2 времени (TT (min hour) и TM(min hour)) time operator+(const time&a){ time temp; ...

Ошибка при присвоении(список) - C++
Вот задание:При поступлении в университет лица, получившие оценку «неудовлетворительно» на первом экзамене, ко второму экзамену не...

опять ошибка.на этот раз cannot convert `float (*)(float)' to `float' in argument passing - C++
#include<stdio.h> #include<stdlib.h> #include<math.h> float f1(float x)/*vira*enie 1*/ {return (x*cos(x))/(1+ pow(x,2));} ...

Ошибка при присвоении значения элементу матрицы - C++
пытаюсь сделать умножение матриц при присвоении значения в строке 19 matrix_B = 3;// (rand() % 4000 + 100) / 100.0; вылетает ошибка, при...

Ошибка при присвоении значения элементу массива в функции - C++
Есть такая вот структура: struct stantsia { string st; int hPrib,mPrib, hOtb,mOtb; }; Есть объявление массива: ...

5
Lord_Voodoo
Супер-модератор
8607 / 2228 / 61
Регистрация: 07.03.2007
Сообщений: 10,801
Завершенные тесты: 1
15.05.2009, 16:33 #2
используй FloatToStrF, просто есть такая беда с числами с плавающей запятой
0
Rififi
2363 / 1056 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
15.05.2009, 16:42 #3
MrAndrey_ka,
может FloatToStr работает некоректно?
всё правильно. числа с плавающей запятой невозможно точно представить в машинном виде, поэтому используется приближенное представление.
отсюда кстати, вытекает правило что нельзя напрямую сравнивать два вещественных числа.
0
MrAndrey_ka
79 / 79 / 2
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
15.05.2009, 16:46  [ТС] #4
Цитата Сообщение от Rififi Посмотреть сообщение
всё правильно. числа с плавающей запятой невозможно точно представить в машинном виде, поэтому используется приближенное представление.
и какова погрешность представления?
0
Rififi
2363 / 1056 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
15.05.2009, 16:49 #5
MrAndrey_ka,
и какова погрешность представления?
FLT_EPSILON, DBL_EPSILON
0
Gosha_Dubinin
35 / 12 / 3
Регистрация: 06.05.2009
Сообщений: 215
15.05.2009, 17:08 #6
тип данных float такой и есть, попробуй подключи longdubl
0
15.05.2009, 17:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2009, 17:08
Привет! Вот еще темы с ответами:

Усечение константного значения при присвоении значений объектам структуры - C++
Здравствуйте! Есть вот такой код: #include <iostream> using namespace std; struct date { int day; char month; int...

Почему конструктор вызывается при присвоении объекта другому объекту - C++
оператор+ выполняется нормально, но когда уже переменная в sum, на след шаге она вызывает конструктор, ибо у меня в примере 9 выходит. А в...

Чем отличаются float преобразования (float)var от float(var) - C++
Здравствуйте! Подскажите, чем отличается (float)var от float(var)

Целые числа типа float - C++
Помогите разобратся: вот написал маленькую прогу, но она пишет десятичные числа типа float и double только в виде целой части. Почему? вот...


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

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

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