0

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

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

我应该如何四舍五入十进制数字并在设计收银机时使用它们?

4

1 回答 1

7

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

请改用定点算术

于 2013-04-10T07:09:01.527 回答