在 C++ 中将 class return 分数作为小数的问题

Issues having a class return a Fraction as a decimal in C++

我对 C++ 有点陌生(我断断续续地学习了几个月),正在尝试制作一个计算器应用程序。我通过指南了解了该语言的工作原理。

我对分数使用 class - 我的成员变量在 private 下,函数(set、get 等)在 public 下。我遇到的问题是我的一个功能 - 目的基本上是 return 所述分数的十进制形式。我可以直接在 Main 中进行数学运算,即使不使用 setprecision 也始终输出小数,效果会很好。

然而,每当我在 class 函数中使用相同的数学运算 - 它总是发布第一。

我可能在某个地方犯了错误,但我似乎找不到它,希望你们这些好人能伸出援手:D

这是我的主要 CPP 文件

//
//  main.cpp
//  Calculator
//
//  Created by Bryan Douglas on 2017-03-30.
//  Copyright (c) 2017 Bryan Douglas. All rights reserved.
//

#include "Fraction.h"

#include <iostream>
#include <string>

int main(int argc, const char * argv[]) {
    Fraction fiftyoverhundred(50, 100);

    std::cout << "The decimal of the fraction you have entered is " << fiftyoverhundred.getDecimal() << std::endl;
}

这是我的分数头文件

//
//  Fraction.h
//  Calculator
//
//  Created by Bryan Douglas on 2017-03-30.
//  Copyright (c) 2017 Bryan Douglas. All rights reserved.
//

#ifndef Calculator_Fraction_h
#define Calculator_Fraction_h

class Fraction {
private:
    float m_numerator = 0;
    float m_denominator = 0;

public:
    Fraction(int numerator, int denominator);
    ~Fraction();

    void setNumerator(int NumeratorInput) { m_numerator = NumeratorInput;};
    int getNumerator() { return m_numerator;};
    void setDenominator(int DenominatorInput) { m_denominator = DenominatorInput;};
    int getDenominator() { return m_denominator;};

    float getDecimal() {return (float)m_numerator /  (float)m_numerator;};
};

#endif

最后,这是我的 Fraction CPP 文件

//
//  Fraction.cpp
//  Calculator
//
//  Created by Bryan Douglas on 2017-03-30.
//  Copyright (c) 2017 Bryan Douglas. All rights reserved.
//

#include "Fraction.h"

#include <stdio.h>

Fraction::Fraction(int numerator, int denominator)
{
    m_numerator = numerator;
    m_denominator = denominator;
}

Fraction::~Fraction()
{

}

我知道我的编码标准和术语可能不够专业,但我喜欢在功能经过测试并按计划工作后修复这些标准和术语。

提前致谢!

您的 getDecimal 有误:

float getDecimal() { return (float)m_numerator / (float)m_numerator; };

分子除以分子没有多大意义。更改为:

...
float getDecimal() { return (float)m_numerator / (float)m_denominator; };
....

并且您的输出将符合预期:

The decimal of the fraction you have entered is 0.5