对于某些财务计算,我们遇到浮点数舍入问题。
基本上,我们希望将像 1000000000.555 这样的货币金额四舍五入到小数点后两位。但是,这个数字的浮点表示是 1000000000.5549999,因此我们将向下舍入到 1000000000.55,而不是正确的 1000000000.56。
有什么方法可以安全地解决这个问题吗?到目前为止,我们唯一想到的就是始终在舍入操作之前将最小的可表示浮点数添加到金额中,但我们不知道这是否在所有情况下都是安全的。
代码是用 C 编写的,需要在 windows32/64/linux/solaris 上运行,所以很遗憾,我们无法访问像 .net 中的 Decimal 数据类型这样的好东西。
任何输入都会有所帮助。
谢谢,里卡德