#include <iostream>
int main()
{
double a = 74.49;
int b = a * 100;
std::cout << "a: " << a << " b: " << b << std::endl;
return 0;
}
输出结果:a: 74.49 b: 7448
原因:double转int精度丢失
解决方法<一>
#include <iostream>
#include <cmath>
int main()
{
double a = 74.49;
int b = std::round(a * 100);
std::cout << "a: " << a << " b: " << b << std::endl;
return 0;
}
采用四舍五入的方式取整数,适用于仅仅需要取整数,且对小数点后第一位大于5而进位影响整数大小的情况
输出结果:a: 74.49 b: 7449
解决方法<二>
#include <iostream>
#include <cmath>
#include <string>
int main()
{
double a = 74.49;
std::string str = std::to_string(a * 100);
int b = atoi(str.c_str());
std::cout << "a: " << a << " b: " << b << std::endl;
return 0;
}
转换成字符串过度一下
输出结果:a: 74.49 b: 7449
菜鸟一枚,希望各位大佬不吝赐教