双位小数C / C ++

时间:2016-09-26 14:20:37

标签: c++ double precision

我有以下代码:

#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”设置为第一个param的值。 当我是debbugin时,该值变为“1.0149999999999999”。

在此代码中,我将value的整数部分设置为parteInteira,将小数部分设置为parteFracionada。两者都是int。

因此,当我返回parteFracionada时,结果为49,但必须为50。

为什么会发生这种情况,我该如何解决?

0 个答案:

没有答案