可能重复:
Why don't operations on double-precision values give expected results?四舍五入问题,双类型
我遇到一个奇怪的问题在C++中。我创建了一个Double类型的变量。然后我做了一些计算,将一些值分配给其他变量,并将结果赋给我声明的双变量。它给了我一个长小数部分的结果。我希望它只有两位小数。并将其存储到变量中。但即使经过多次尝试四舍五入,我也无法将其舍入到小数点后两位。
然后我试着另一种方法来检查真正的问题是什么。我创建了一个Double变量并将其赋值为1.11。但是当我通过放置一个断点并为该变量添加一个监视器来调试它时,我可以发现现在存储在变量中的值是1.109999999999。
我的问题是,它为什么会这样显示?我们有没有办法将变量舍入到两位小数?为什么即使我们指定一个只有两位小数的数字,它也会显示长整数的小数部分?
请建议一种方法来存储数字 - 无论是计算还是直接分配 - 按照原样存储在双变量中,而不是具有长小数部分的数字。
不要使用定点计算浮点运算。 – 2010-10-24 13:57:36
double d = 1.3894637; int i = ceil(d * 10); – 2015-09-16 05:37:34