2017-04-21 7 views
0

私はC++を少し新しくしました(私は数ヶ月間それを学んでいます)。そして、電卓アプリケーションを作ろうとしています。私はガイドを通して学んだように、言語の仕組みをかなりよく理解しています。クラスを持つ問題は、C++で小数点以下を小数点として返します。

私はFractionsのクラスを使用します。私のメンバ変数はprivateであり、関数(set、getなど)はpublicです。私が抱えている問題は、私の関数の1つです。目的は、基本的には、小数点以下の形を返すことです。私はMainで数学を直接行うことができ、setprecisionを使わなくても常に小数点を出力することで素晴らしい結果が得られます。

しかし、私がクラス関数の中で同じ数学を使うときはいつも、それは常に1番です。

私はどこかで間違いを犯してもよいが、私はそれを見つけるように見えることはできませんし、あなた罰金の人々が手を貸すことができ期待していた。ここでは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

ああ私の神....アーハ、そうするだろう。 人為的なエラーとしてこれを書き留めてください。私はおそらくそれをコピーして貼り付け、正しいメンバーを反映​​するためにそれを修正するのを忘れた。 ありがとうございました! –

+0

@BryanDouglas両方の変数が既に 'float'として宣言されているので、'(float) 'のキャストは必要ないことに注意してください。 –

+0

はい、あなたのソリューションを試したときにそれらも削除しました。 キャストに関するミスをしていたら...キャストするとすべて教えてください。 もう一度おねがいします! –

関連する問題