关于C#:浮动值的一轮

Round of floating values

本问题已经有最佳答案,请猛点这里访问。

我正在设计一个收银机,在收银机中,我必须比较两个浮动值,每次比较时都会出错,也就是说,我无法将金额的差额四舍五入到小数点后两位,并将其与值进行比较。

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

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


您不应该使用二进制浮点来处理货币量。有许多问题与四舍五入和浮点的不精确性质有关。例如,您将无法准确地将0.1表示为float

用定点算术代替。