我如何在C中乘以这个?

时间:2014-01-25 10:07:13

标签: c precision multiplying

我正在编写一个程序,它从用户那里获取美元输入并将其转换为int,即美分。 用户将始终输入最多2位小数的int或浮点数。我想通过乘以100将其转换为int。但是该程序对某些数字不起作用。

int cents = (dollars*100);

dollars是用户提供的浮点输入。例如,如果我dollars = 4.2,则cents变为419.999。我该如何纠正这个问题?

4 个答案:

答案 0 :(得分:4)

你无法纠正它。浮点数没有“小数位”。它们总是近似和模糊的。永远不要使用浮点数来赚钱 - 这是处理任何财务问题的最重要的软件规则之一。以字符串(%s)读取输入,并通过在字符串中查找小数点然后在atoi之前和之后的部分上使用.将美分汇总在一起

答案 1 :(得分:2)

像这样简单调整值:

int cents = (int)(dollars*100 + 0.5);

答案 2 :(得分:0)

cents = (int)((dollars*100) + .5);

答案 3 :(得分:0)

1)您可以在项目属性中调整浮点精度模型 2)当从float转换为int时,添加一个位以允许向下舍入总是很方便的:

int cents = ((dollars*100.0)+0.5);