2014-09-24 114 views
-1

在處理一個相當大的項目時,我碰巧注意到我應該返回一個Long值的函數之一是返回一個Integer。我在一個非常小的環境中再現了這個錯誤,認爲這會讓問題變得清晰,但我仍然沒有看到這個問題。輸入是1.123,返回值是1.如果我輸入任何Long,例如; 123.456,它只會返回123.我沒有看到什麼?C++函數應該返回Long,返回Integer類似的值

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; 
} 

Source.cpp

#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,所以答案是痛苦簡單。我之前沒有多久就工作過,但我認爲我知道他們是什麼。我沒有。

因此,長整數和整數都是整數,並且只要列出長整型就可以讓我假設一個整數不起作用,並且由於我的誤解,我使用double來測試函數。謝謝您的幫助!

+0

您應該閱讀關於您嘗試使用的語言的基本文檔:http://en.cppreference.com/w/cpp/language/types – ach 2014-09-24 04:08:01

+0

是的,我做了一個快速假設,這是不正確的。我會在下次發現錯誤時閱讀完整的C++文檔。 – trueCamelType 2014-09-24 04:09:30

+0

沒人希望你閱讀完整的C++文檔,但你所問的是ABC。 – ach 2014-09-24 05:58:43

回答

2

longint類型整體類型,他們只能容納整數像742

您應該使用floatdouble作爲一種類型,優選後者用於增加範圍和精度。這將允許您保存實際數字,例如3.1415926535892.718281828459

0

Long是一個整數。將浮點值賦給整數會導致舍入。

你想雙重或浮動。