Foxocsj
@Foxocsj
учусь htmlf

Почему float округляет?

У меня есть программа, мне нужно чтобы он считала средний бал, она его считает, но при этом округляет хотя я указал float

#include <iostream>
#include <math.h>
#include <string>
using namespace std;

class Student {
	string surname;
	string name;
	string patronymic;
	
	public:
	int informatics;
	int algorithmization;
	int algorithm;
	
	float sum() {
		return ((informatics+algorithmization+algorithm)/3);
	}
	float vyvod() {
		cout << "Информация о студенте";
		cout << "\nИмя: " << name;
		cout << "\nФамилия: " << surname;
		cout << "\nОтчество: " << patronymic;
		cout << "\nОценка по информатике: " << informatics;
		cout << "\nОценка по алгоритмизации: " << algorithmization;
		cout << "\nОценка по теории алгоритмов: " << algorithm;
		cout << "\nСредний бал всех оценок: " << sum();
		return 0;
	};
	
	Student(string surname_n, string name_n, string patronymic_n, int informatics_n, int algorithmization_n, int algorithm_n) {
		surname = surname_n;
        name = name_n;
        patronymic = patronymic_n;
        informatics = informatics_n;
        algorithmization = algorithmization_n;
        algorithm = algorithm_n;
	};
	Student() {};
	~Student() {};
	string getSurname() {return surname;}
    string getName() {return name;}
    string getPatronymic() {return patronymic;}
    void setSurname(string surname_n) { surname = surname_n; }
    void setName(string name_n) { name = name_n; }
    void setPatronymic(string patronymic_n) { patronymic = patronymic_n; }
};

int main() {
	Student s1("Корегин", "Александр", "Алексеевич",5,4,3);
	s1.vyvod();
	return 0;
}
  • Вопрос задан
  • 1242 просмотра
Пригласить эксперта
Ответы на вопрос 3
0xD34F
@0xD34F
Нет никакого округления float. Вычисленное значение изначально является целым - потому что целыми являются все части выражения. Замените /3 на /3.0.
Ответ написан
Комментировать
dnovikoff
@dnovikoff
float(informatics+algorithmization+algorithm)/3;

В вашем примере сначала вычисляется int (округляется), а потом переводится в float.
Нужно перед делением перевести сумму в float
Ответ написан
@Wexter
Потому что все операции у вас производятся с целыми числами, делите на число с точкой
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы