我使用构建的Visual Studio 2015框架对C ++函数进行单元测试。但是,测试失败并且说实际值为0.如果我返回(y2 - y1)
,那么我得到99的值。如果我返回(x2 - x1)
,我得到86400,但如果我返回{{ 1}}我得到零。为什么是这样?我是否需要对(y2 - y1) / (x2 - x1)
做些什么来告诉它处理花车?即使我在浮点数中进行除法然后返回变量,我仍然得到零?
Assert::AreEqual()
我用以下单元测试来调用它:
float averageGradient(int x1, int x2) {
//do some maths, the result of which: y1=-39, y2= 60, x1=683675, x2=770075
float m = (y2 - y1) / (x2 - x1);
return (y2 - y1) / (x2 - x1);
}
答案 0 :(得分:2)
即使我在浮点数中进行除法然后返回变量,我仍然得到零?
这不是你正在做的事情。
float averageGradient(int x1, int x2) {
//do some maths, the result of which: y1=-39, y2= 60, x1=683675, x2=770075
float m = (y2 - y1) / (x2 - x1);
return (y2 - y1) / (x2 - x1);
}
首先对int
进行除法,然后将结果(0)分配给float
。然后再次对int
s进行除法并返回。
整数除法的结果只是截断它并给出一个int作为结果。如果你想得到一个浮动结果,你必须在进行除法之前向float
施放至少一个参数:
float averageGradient(int x1, int x2) {
//do some maths, the result of which: y1=-39, y2= 60, x1=683675, x2=770075
float m = (y2 - y1) / (float)(x2 - x1);
return m;
}
应该这样做。
您还从哪里获取y1
和y2
,因为您没有将它们作为参数?那些全局变量吗?
答案 1 :(得分:-2)
您应该返回您声明为浮点数而不是计算的Enum
变量。您的回访应该简单地说:m