一轮浮动值

use*_*862 0 c floating-point floating-point-precision

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

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

我应该如何舍入十进制数字并将其用于设计收银机?

NPE*_*NPE 7

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

改为使用定点算术.

  • @ user2227862使用整数类型来存储分数. (2认同)