【诡异的有关问题】关于浮点型数据转换成整型数据的有关问题

【诡异的问题】关于浮点型数据转换成整型数据的问题
如果输入48.32的话,那么输出的就是48 31,这是为什么呢?这种问题如何解决?


#include <iostream>
using namespace std;

int main()
{
double money;
int dollars, cents;
cin >> money;
dollars = static_cast<int>(money);
cents = static_cast<int>((money - dollars) * 100);

cout << dollars << " " << cents << endl;


------解决方案--------------------
浮点数无法精确表示48.32,从结果来看,实际上是48.31999999999999999avvdfsgvsth...
------解决方案--------------------
楼上说的很对,
也就是机器内部的0,1组合没办法精确表示48.32

解决办法就是自己根据需要写个 四舍五入 函数

------解决方案--------------------
round【诡异的有关问题】关于浮点型数据转换成整型数据的有关问题
------解决方案--------------------
【诡异的有关问题】关于浮点型数据转换成整型数据的有关问题 加个0.5
------解决方案--------------------
http://bbs.****.net/topics/390676437
------解决方案--------------------
引用:
Quote: 引用:

楼上说的很对,
也就是机器内部的0,1组合没办法精确表示48.32

解决办法就是自己根据需要写个 四舍五入 函数


怎么样的一个四舍五入函数?


std::round
std::lround
std::llround
 
(C++11)