You need to think in the fact that you are dividing int's where the only way to get a double/float value out of that is to convert the result into double/float, else the result will always be what any int type can represent.
Code:
pert_occ = static_cast<double>(100.0*no_op_rooms/no_rooms);