如何在虚函数返回的double中舍入小数?

时间:2015-11-08 02:26:39

标签: c++ c++11 visual-c++ c++14

/ * 好吧,我一直在努力研究这种多态性。现在,hourly_worker的计算工资实现看起来像这样

hourly_worker::compute_pay()
{

 tot_sal = hrs_wrk * hourly;  
 return tot_sal;
}

我希望这返回$ 2000.00,但是现在它只返回$ 2000,因为该函数设置为虚拟返回类型而不是double。无论如何在不改变虚函数的情况下获得这些小数点?谢谢你们

* / 现在这是我的驱动程序文件:http://pastebin.com/hUYhxVEu 和tot_sal是Worker的私有双数据成员,compute_pay是Worker的公共虚函数,由每个子类继承。请帮助哈哈。如果您需要/想要查看更多代码,请告诉我。另外,这是hourly_worker的实现文件。 http://pastebin.com/CtjiZUCG只是添加,setprecision&固定或showpoint对返回值不做该死的事。

1 个答案:

答案 0 :(得分:0)

你的函数没有virtual返回类型,它是virtual,这意味着当从指针或引用调用函数时,对象的实际类型的函数将被调用,而不是指针类型。

如果不放置返回类型,一些不符合C ++标准的编译器将使用int作为默认值(因为这在C中就是这种情况)。如果您在复制/粘贴代码时没有截断代码,那么可能就是您的情况。因此,您的函数返回int。如果您希望它返回double,只需更改其签名:

virtual double hourly_worker::compute_day();

现在,当然,只有当hourly和/或hrs_wrkdouble时才会有用。否则,结果将是int,并且只需格式化显示就可以添加.00。

正如评论中所讨论的,您可能更喜欢固定点算术而不是浮点运算来进行计算。这个想法很简单:使用int(或long int能够处理亿万富翁)并将所有值乘以1000(或更多取决于您想要处理的最小金额,我不是专家,但我认为十分之一通常是使用的。)