一轮浮动值

时间:2013-04-10 07:06:16

标签: c floating-point floating-point-precision

我正在设计一个收银机,其中我必须比较2个浮点值,每次比较时我都会收到错误.ie因为我无法将最多2位小数的差异四舍五入并与之比较值。

例如。如果客户支付的金额为60.36,而发出的账单为30.24 差异出来的是30.120001。 我甚至尝试使用floor函数将其四舍五入到两位小数: floorf(差异* 100 + .5)/ 100;但它不起作用。

我应该如何舍入小数位并将其用于设计收银机?

1 个答案:

答案 0 :(得分:7)

您不应该使用二进制浮点来处理货币金额。有许多问题与舍入和浮点的不精确性有关。例如,您无法将0.1完全代表float

改为使用fixed-point arithmetic