2017-04-21 13 views
0

我對C++有點新(我已經學習了幾個月,現在開啓和關閉),並試圖製作一個Calculator應用程序。我通過指導瞭解了語言是如何工作的,我非常瞭解它。有一個類的問題在C++中返回一個小數作爲分數

我使用Fractions的類 - 與我的成員變量私人和功能(設置,獲取等)下公共。我遇到的問題是我的一個函數 - 目的基本上是返回所述分數的小數形式。我可以在Main中直接進行數學運算,並且即使不使用setprecision也總能輸出小數位數,所以它可以很好地工作。

但是,每當我在類函數內部使用相同的數學運算時,它總是張貼第一個數字。

我可能犯了一個錯誤的地方,但我似乎無法找到它,並希望你罰款人可以伸出援助之手: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 

最後,這裏是我的分數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() 
{ 

} 

我知道我的編碼標準和術語可能不及專業人士,但我喜歡在功能測試完成後按照計劃進行修復。

預先感謝您!

+3

檢查'getDecimal'你的計算。 – tkausl

+1

看來問題是你的函數中的一個簡單的錯字計算分裂。 – AlexG

+1

你的代碼很混亂。你將分子和分母存儲爲浮點數,然後將它們轉換...我猜你的錯誤的來源是相似的。你應該再次閱讀代碼,並確保你瞭解那裏的內容。也許你輸入得太快了。 – luk32

回答

0

您的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 
+0

@BryanDouglas請注意,因爲這兩個變量已經被聲明爲'float',所以不需要鑄造'(float)'。 –

+0

是的,當我嘗試你的解決方案時,我刪除了這些。 我想,如果我犯了與施放有關的錯誤......施放所有這些應該告訴我。 再次感謝! –

相關問題