如何在 for 循环内部或外部打印双精度变量

how do i print the double variable inside or outside the for loop

本文关键字:外部 打印 双精度 变量 内部 for 循环      更新时间:2023-10-16

我正在做一个关于酒店入住率的项目,但我在打印double变量时遇到困难。我需要知道如何使用 setprecision 显示double变量。

#include <iostream>
using namespace std;
int main()
{
    int numfloors=0; //for number of floors
    int numrooms=0; //for number of rooms per floor
    int numoccipied=0; //for rooms that are occupied
    int TRooms=0; //for total rooms in hotel
    int TOcuppied=0; //for total rooms occupied in the hotel
    int TUnoccupied=0; //for unoccupied rooms in the hotel
    double occupancy=0; //for persentage occupancy
    cout<<"Enter the number of floors in the hotel"
        <<"nNote: please do not write value less than 1: ";
    cin>>numfloors;
    for(int floor=1; floor<=numfloors; floor++) //loop starts
    {
        cout<<"how many rooms are there in no."<<floor<<"floor?n"; //ask user to for number of rooms per floor
        cin>>numrooms;
        TRooms+= numrooms; //total rooms in each floor will add and store in Trooms
        cout<<"how many rooms are ocupied?n";  //ask user to put number of occupied rooms
        cin>>numoccipied;
        TOcuppied+=numoccipied; //number of rooms occupied per floor is added 
        TUnoccupied=TRooms-TOcuppied; //stores all unoccupied rooms
        occupancy=(TOcuppied)/TRooms; //store persentage occupancy 
        cout<<"nnThe Hotel has "<<TRooms<<"roomsn";
        cout<<"from which "<<TOcuppied<< " rooms are occupied,n";
        cout<<"and "<<TUnoccupied<<" are Unoccupied.n ";
    }
    cout << fixed << showpoint << setprecision(1);
    cout<<"nnOccupancy Rate: "<<occupancy*100<<"% nn";
    return 0;
}

你似乎是一个初学者,所以我会列出你的代码的一些问题:

  1. 当除以两个整数时,结果也是一个整数。因此,在积分除法中,4/10 为 0。因此,此行始终产生零:

    occupancy=(TOcuppied)/TRooms;
    

    而是使用:

    occupancy=(TOcuppied)/(double)TRooms;
    
  2. cout的设置显然必须全部出现在输入之前。因此,首先发送设置:

    cout << fixed << showpoint << setprecision(1);
    

    然后:

    cout << occupancy*100;
    

    当然,你可以把它放在一行上:

    cout << fixed << showpoint << setprecision(1)<< occupancy*100;
    
  3. 您允许某些类型的无效输出。由于您的作业看起来很像家庭作业,因此您可能需要对其进行消毒。一个是你允许一个人进入比可用更多的占用房间:

    how many rooms are there in no.1floor?
    10
    how many rooms are ocupied?
    20
    The Hotel has 10rooms
    from which 20 rooms are occupied,
    and -10 are Unoccupied.
    Occupancy Rate: 200.00%
    

    因此,请记住检查该输入:

    if(numoccipied>numrooms) {
        // do something, such as asking the user to enter correct value
    }
    

    同样,您应该防止用户进入少于 1 层:

    if(numfloors<1)
        return 0;