Деление дробных чисел

154
09 мая 2019, 14:00

Есть class Money

oop.h

#pragma once
class Money
{
private:
    unsigned long long rubles;
    unsigned int penny;
public:
    Money();
    Money(const Money& money);
    Money(unsigned long long r, unsigned char p);
    Money operator /(Money &rhs);
    friend std::ostream& operator<<(std::ostream& os, const Money &data);
};

oop.cpp

#include <iostream>
#include "oop.h"
Money::Money()
{
    rubles = 0;
    penny = 0;
}
Money::Money(const Money& money)
{
    rubles = money.rubles;
    penny = money.penny;
}
Money::Money(unsigned long long rubles, unsigned char penny)
    :rubles(rubles), penny(penny) {}
Money Money::operator /(Money &rhs)
{
    return Money(rubles / rhs.rubles, penny / rhs.penny);
}
std::ostream& operator<<(std::ostream& os,const Money& data)
{
    os << data.rubles << "," << data.penny;
    return os;
}

Source.cpp

#include <iostream>
#include <windows.h>
#include "oop.h"
int main()
{
    SetConsoleOutputCP(1251);
    Money rubles(10,1);
    Money rubles2(5, 8);
    std::cout << rubles / rubles2 << std::endl;
    system("pause");
}

Как правильно поделить две дробные числа, где целая и дробная часть - это две разные поля?

Answer 1

Программа, классы и т.п. - это всего лишь модели реальности.

Money Money::operator /(Money &rhs)

Скажите, если вы поделите 15 рублей 25 копеек на 3 рубля 47 копеек, то какую сумму (а у вас операция деления возвращает именно Money) вы получите?

В лучшем случае вам нужно возвращать значение типа double:

double Money::operator /(Money &rhs)
{
    return double(rubles*100+penny)/(rhs.rubles*100+rhs.penny);
}
READ ALSO
Покраска строки в QTableView

Покраска строки в QTableView

Мне нужно покрасить строку в QTableViewЯ использую QSqlQueryModel

201
Арифметика двух чисел и знака [закрыт]

Арифметика двух чисел и знака [закрыт]

Подскажите как можно решить мою проблемуНужно передать два числа и знак(+ или - или *) на сервер ( по технологии RMI), где он складывает эти два...

160
Stopwatch для приложения android

Stopwatch для приложения android

Необходимо создать приложение на android с секундомером, выводящем время в формате MM:SSMS

205