Ну, я новичок, это мой год по специальности компьютерные науки. Я пытаюсь сделать
упражнение из моего учебника, в котором я использую структуру под названием MovieData
, которая имеет
конструктор, который позволяет мне инициализировать переменные-члены, когда MovieData
структура создана. Вот как выглядит мой код:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
// struct called MovieData
struct MovieData
{
string title;
string director;
unsigned year;
unsigned running_time;
double production_cost;
double first_year_revenue;
MovieData() // default constructor
{
title = "Title";
director = "Director";
year = 2009;
running_time = 90;
production_cost = 1000000.00;
first_year_revenue = 1000000.00;
}
// Constructor with arguments:
MovieData(string t, string d, unsigned y, unsigned r, double p, double f)
{
title = t;
director = d;
year = y;
running_time = r;
}
};
// function prototype:
void displayMovieData(MovieData);
// main:
int main()
{
// declare variables:
MovieData movie, terminator("Terminator", "James Cameron", 1984, 120, 5000000, 2000000);
// calling displayMovieData function for movie and terminator
// so it will display information about the movie:
displayMovieData(movie);
displayMovieData(terminator);
return 0;
}
// displayMovieData function:
// It receives struct MovieData variable as
// an argument and displays that argument's
// movie information to the user.
void displayMovieData(MovieData m)
{
cout << m.title << endl;
cout << m.director << endl;
cout << m.year << endl;
cout << m.running_time << endl;
cout << fixed << showpoint << setprecision(2);
cout << m.production_cost << endl;
cout << m.first_year_revenue << endl << endl;
}
вот вывод, который я получил:
Title
Director
2009
90
1000000.00
1000000.00
Terminator
James Cameron
1984
120
-92559631349317830000000000000000000000000000000000000000000000.00
-92559631349317830000000000000000000000000000000000000000000000.00
Press any key to continue . . .
Скомпилировано в Microsoft Visual C ++ 2008 Express Edition.
Мой вопрос: происходит ли это из-за переполнения двойного типа данных? Я даже попробовал это, используя long double, и происходит то же самое. хотя я использовал 5mil как production_cost
и 2mil как first_year_revenue
, оба выходных числа одинаковы. При использовании моего конструктора по умолчанию правильно выводится 1000000. Использую ли я в этом случае правильный тип данных? Я хочу, чтобы оно было двойным, потому что это денежное число, доллары и центы.
Спасибо за любую помощь, оказанную мне на пути. Извините за мой длинный вопрос. Это мой первый пост на SO, поэтому любые отзывы о правильном формате вопросов будут отличными, Спасибо!