【发布时间】:2015-11-08 02:26:38
【问题描述】:
/* 好的,我已经为此苦苦挣扎了一段时间来练习多态性。现在,hourly_worker 的计算支付实现如下所示
hourly_worker::compute_pay()
{
tot_sal = hrs_wrk * hourly;
return tot_sal;
}
我希望它返回 2000.00 美元,但现在它只返回 2000 美元,因为函数设置为虚拟返回类型而不是双精度。有没有办法在不改变虚函数的情况下获得这些小数点?谢谢大家
*/ 现在这是我的驱动文件:http://pastebin.com/hUYhxVEu tot_sal 是 Worker 的私有 double 数据成员,compute_pay 是 Worker 的公共虚函数,由每个子类继承。请帮助大声笑。如果您需要/想查看更多代码,请告诉我。另外,这里是 hourly_worker 的实现文件。 http://pastebin.com/CtjiZUCG 只是添加,setprecision & fixed 或 showpoint 不要对返回值做任何该死的事情。
【问题讨论】:
-
让我们退后一步:您从不使用浮点值来表示货币值。如果您的信用卡对帐单、薪水等都包含浮点不精确造成的错误,您会有什么感受?
-
浮点是错误类型,实际上是双精度,我在编辑时更改了它。无论如何,我发现了我的错误,我需要将 compute_pay 定义为 worker.h 中的虚拟双精度,而不是直接虚拟。一个字lmao我就输了。感谢您的回复。
-
双精度是浮点数。
-
“虚拟返回类型”?虚表示函数具有多态行为。你仍然需要一个返回类型。
-
对于课堂作业,这是可以的,但这里没有会计师会接受浮点数。
标签: c++ c++11 visual-c++ c++14