双位小数C / C++

psed 发布于 4 天前 c++ 最后更新 4 天前 1 浏览

我有以下代码:

#include <iostream>
#include <string>
#include <math.h>
using namespace std;
double sysmoroundtoabnt(double value, int digits)
{
double potencia, valorElevado, auxiliar;
    int parteInteira, parteFracionada;
potencia = pow(10, abs(digits));
    valorElevado = value * (potencia);
    parteInteira = trunc(valorElevado);
parteFracionada = trunc(modf(valorElevado, &auxiliar) * 100);
return parteFracionada;
}
int main()
{
    cout << sysmoroundtoabnt(1.015, 2);
}
我将“1.015”设置为第一个参数的值。 当我debbugin时,该值改为“1.0149999999999999”。 在此代码中,我将value的整数部分设置为parteInteira,将小数部分设置为parteFracionada。两者都是int。 所以当我返回parteFracionada时,结果是49,但它必须是50。 为什么会发生,我该如何解决?
已邀请: