【问题标题】:C++, losing 1 when converting float/double to int? [duplicate]C ++,将float / double转换为int时丢失1? [复制]
【发布时间】:2015-09-23 13:11:54
【问题描述】:

我想计算应付零钱,并将其转换为便士。

#include <iostream>
using namespace std;

int main()
{
    float cost   = 5.15,
          paid   = 10.00,
          change = 0.0;

    int pennies = 0.0;

    change = paid - cost;
    pennies = static_cast<int>(change * 100);

    cout << change << endl;       //4.85
    cout << pennies << endl;      //484  ??

    return 0;
}

便士计算为 484,我的便士去哪儿了?

我已经用 float 和 double 尝试过这个,有和没有 static_cast。

我正在学习 c++ 入门课程,所以重点是通过基本操作来完成。

当使用浮点数时,剂量 (4.85 * 100) 的计算结果类似于 484.999999...所以它被截断了?

【问题讨论】:

    标签: c++ type-conversion


    【解决方案1】:

    使用round...................................... .....

    【讨论】:

    • 我会为 500 Alex 选择“应该在评论部分中的答案”
    • ??? 你太搞笑了@CoryKramer
    • @CoryKramer 我所说的是否有错误或不适合回答? OP 有一个截断问题,将通过舍入而不是截断来解决。哦,你用“500 Alex”把我弄丢了……那是什么意思?
    • @PeterSchneider 有一个特定的密切原因可以说“这是一个仅限链接的答案”,这对任何人都没有用。要成为一个完整的独立答案,您如何添加 how 以使用std::round 来解决他们的问题。你必须用填充字符填充你的“答案”这一事实应该告诉你你太简短了。我的其余评论是一个糟糕的笑话,引用了“危险”节目
    • @CoryKramer 嗯。我认为带有链接的“圆形”一词应该激发洞察力?用法似乎微不足道。 -- 500 亚历克斯:哦 :-)。
    猜你喜欢
    • 2010-10-29
    • 2020-08-07
    • 2020-08-05
    • 2011-05-22
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多