2014-09-24 2 views
-1

상당히 큰 프로젝트에서 작업하는 동안 Long 함수를 반환하는 함수 중 하나가 Integer를 반환한다는 것을 알게되었습니다. 아주 작은 환경에서 오류를 재현 해 나에게 문제를 명확하게 만들 것이라고 생각했지만 여전히 문제가 보이지 않습니다. 입력은 1.123이고 반환 값은 1입니다. 예를 들어 Long을 입력하면; 123.456, 123 만 반환합니다. 내가 무엇을 보지 않습니까?C++ 함수가 Long을 반환하고 대신 정수와 같은 값을 반환합니다.

source1.cpp 모두

#ifndef HEADER_H 
#define HEADER_H 


using namespace std; 

class testClass 
{ 

private: 
    long m_testLong = 0.0; 

public: 

    long getTestLong(); 
    void setTestLong(long sn); 
}; 

#endif 

header.h가

#include "Source1.cpp" 
#include <string.h> 

void testClass::setTestLong(long sn) 
{ 
    m_testLong = sn; 
} 

long testClass::getTestLong() 
{ 
    return m_testLong; 
} 

#include <iostream> 
#include "Source1.cpp" 
#include "Header.h" 

using namespace std; 

int main(void) 
{ 

testClass *myClass = new testClass; 

cout << "Setting test long value using setTestLong function -- 1.123" << endl; 
myClass->setTestLong(1.123); 
long tempTestLong = 0.0; 
tempTestLong = myClass->getTestLong(); 
cout << tempTestLong << endl; 

system("Pause"); 
return 0; 
} 

OK Source.cpp이므로 응답은 고통 간단. 나는 오래 전에 함께 일한 적이 없었지만 나는 그들이 무엇인지 알았다고 생각했다. 나는하지 않았다.

그래서 longs와 정수는 모두 정수이며 long으로 나열된 유형은 정수로 가정합니다. 오해로 인해 double로 함수를 테스트했습니다. 도와 주셔서 감사합니다!

+0

사용하려는 언어에 대한 기본 설명서를 읽었어야합니다. http://en.cppreference.com/w/cpp/language/types – ach

+0

그래, 나는 틀렸다고 빠른 가정을했습니다. 다음 번에 오류가있는 전체 C++ 설명서를 읽습니다. – trueCamelType

+0

아무도 당신이 완전한 C++ 문서를 읽을 것을 기대하지는 않지만, 당신이 묻는 것은 ABC입니다. – ach

답변

2

longint 유형은 단지 7 또는 42 같은 정수를 저장할 수, 통합 유형입니다.

유형으로는 float 또는 double을 사용해야하며 범위와 정밀도를 높이려면 후자가 바람직합니다. 그러면 3.141592653589 또는 2.718281828459과 같은 실수를 가질 수 있습니다.

0

Long은 정수입니다. 부동 소수점 값을 정수에 대입하면 반올림이 발생합니다.

두 배나 부피를 원합니다.