我有以下代码:
#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。
为什么会发生这种情况,我该如何解决?