C++ 双精度输入c++;

C++ 双精度输入c++;,c++,int,double,C++,Int,Double,我的用户以浮点数(美元和美分)的形式输入值,我试图用它们的输入执行精确的计算。为此,目标是将其输入乘以100,并将其转换为整数。但是,当我尝试使用cin将其输入作为双精度输入时,它没有准确存储,即,如果输入15.03,则该值存储为15.029999999(基于代码调试)。虽然这对我的测试用例来说不是问题,但我预见到舍入错误会导致奇怪的问题。考虑到我只是在进行2个小数点的计算,有没有办法解决这个问题?我的代码如下: double ammount_spent; cin >> ammou

我的用户以浮点数(美元和美分)的形式输入值,我试图用它们的输入执行精确的计算。为此,目标是将其输入乘以100,并将其转换为整数。但是,当我尝试使用cin将其输入作为双精度输入时,它没有准确存储,即,如果输入15.03,则该值存储为15.029999999(基于代码调试)。虽然这对我的测试用例来说不是问题,但我预见到舍入错误会导致奇怪的问题。考虑到我只是在进行2个小数点的计算,有没有办法解决这个问题?我的代码如下:

double ammount_spent; 
cin >> ammount_spent; 
int cents_spent=100*ammountspent; 
cout cents_spent; 

为什么要先乘以100?您不能在任何地方都使用双精度吗?将货币接受为两个整数而不是一个双精度整数。或者您可以接受为字符串,稍后再对其进行分析。15.03不能精确表示为浮点,15.029999999是最接近的
双精度
。使用整数。我运行你给出的代码。如果我给出输入15.03,那么它的存储值为15.029999999,这是真的。但最后它打印1503作为答案。我可以知道你们在哪里发现这个问题吗?为什么要先乘以100?您不能在任何地方都使用双精度吗?将货币接受为两个整数而不是一个双精度整数。或者您可以接受为字符串,稍后再对其进行分析。15.03不能精确表示为浮点,15.029999999是最接近的
双精度
。使用整数。我运行你给出的代码。如果我给出输入15.03,那么它的存储值为15.029999999,这是真的。但最后它打印1503作为答案。我可以知道你们在哪里发现这个问题吗?