【问题标题】:Avoid Int to double typecast rounding? [duplicate]避免 Int 进行双重类型转换舍入? [复制]
【发布时间】:2019-10-15 04:48:07
【问题描述】:

我通过将整数除以 10 的幂来将 int 转换为 double。对于具有 7 位或更大数字的整数,当我将 int 转换为 double 时,似乎执行了舍入.为什么会发生这种情况?如何避免这种舍入?

#include <iostream>
using namespace std;

double add_decimals(int x, int decimal_places)
{
    double ret = 1.0 * x;
    cout << "x= " << x << endl;
    cout << "ret before changes= " << ret << endl;
    for (int i = 0; i < decimal_places; ++i)
    {
        ret /= 10;
    }
    return ret;
}

int main() 
{
    double d = add_decimals(1234566, 2);
    cout << "d= " << d << endl;
}

【问题讨论】:

    标签: c++ casting


    【解决方案1】:

    没有;你只是没有正确观察这些值。

    快速修复:

    std::cout << "d= " << std::fixed << d << endl;
    

    您需要#include &lt;iomanip&gt; 才能使用std::fixed

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 2016-10-11
      • 2022-01-22
      • 1970-01-01
      • 2013-04-21
      • 2021-01-29
      相关资源
      最近更新 更多