【问题标题】:Rounding number to next .05 or whole digits in c++将数字四舍五入到下一个 .05 或 C++ 中的整数
【发布时间】:2015-12-09 08:40:21
【问题描述】:

对不起,如果我的标题含糊不清,我正在学习 c++,我们正在制作一个计算货币的结帐/库存系统,如果有任何变化,例如 1.69,它应该自动四舍五入到 1.70,或者如果它是 1.63,它会向上舍入到 1.65,避免以美分换钱。

这是我试图适应以返回正确舍入的相关代码:

if (!taxed()) {
                    cout << price() * quantity();

                }
                else {
                    cout <<  (price() * quantity()) * 1.13;
                }

请注意,我尝试了 cout 精度但没有成功。

我设法输出到 1.7,但是如何将其更改为 1.70?

尝试更改精度,但这改变了我的答案,也将其设置为 double 等没有帮助。

【问题讨论】:

  • 加 0.05 到您的金额,然后算一算。
  • @tonypdmtr,在添加数量和税金之前先到我的总金额或价格?

标签: math rounding digits price


【解决方案1】:

也许是最简单的方法:

  1. 乘以 100(得到不带小数的所需值),
  2. 除以 5(因为这是您想要的精度),
  3. 将此数字四舍五入。现在用四舍五入的数字反转过程:
  4. 乘以 5 和
  5. 除以 100(得到两位小数的值)。

请注意,您可以缩短程序:

  1. 乘以 20(之前的第 1 步和第 2 步相结合),
  2. 四舍五入,
  3. 乘以 0.05。

主要是除以所需的精度 (5) 然后四舍五入。

【讨论】:

  • 你如何“四舍五入”
  • 另外,1.69 乘以 100 得到 169,除以 5 得到 33.8...乘以 5 然后再除以 100 得到 1.69。
  • 根据您使用的版本,您可能没有可用的 round() 函数。这种情况下怎么做,你可以在stackoverflow.com/questions/485525/round-for-float-in-c中找到一些例子
  • 关于您的第二条评论 - 这就是您必须对数字进行四舍五入的原因。所以当你得到 33.8 时,它会四舍五入为 34。乘以 5(然后除以 100)后,你得到 1.70。
  • 不确定如何在我的代码中实现该链接。我使用 g++ 编译器,所以它很漂亮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 2011-03-11
  • 1970-01-01
相关资源
最近更新 更多