在处理一个相当大的项目时,我碰巧注意到我应该返回一个Long值的函数之一就是返回一个Integer。我在一个非常小的环境中重现了这个错误,认为它会让问题清楚,但我仍然没有看到这个问题。输入为1.123,返回值为1.如果我输入任何Long,例如; 123.456,它只会返回123.我没看到什么?
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;
}
好的,所以答案很简单。我以前没有多久工作,但我以为我知道他们是什么。我没有。
所以long和整数都是整数,并且列出的类型很长,这使我假设一个整数不起作用,并且由于我的误解,我用双重测试了该函数。谢谢你的帮助!
答案 0 :(得分:2)
long
和int
类型是整数类型,它们只能包含7
或42
等整数。
您应该使用float
或double
作为类型,最好是后者以增加范围和精度。这样您就可以保留3.141592653589
或2.718281828459
等实数。
答案 1 :(得分:0)
Long是一个整数。将浮点值赋给整数会导致舍入。
你想要双倍或漂浮。