匹配sprintf的舍入行为

时间:2013-11-23 15:37:37

标签: c++

我目前使用sprintf向用户显示了一个圆形输出。

应用程序需要根据用户看到的此值做出决策,以便用户可以验证应用程序是否正常工作。目前内部没有使用舍入,因此当用户看到9.8的结果时,内部代码看起来像9.7999999999999996,不等于9.8

环顾四周,我找不到C ++中的圆形函数,虽然提出了许多关于如何舍入的很好的例子我担心它们可能与sprintf在所有情况下都会完全匹配。

所以目前我正在使用sprintf的输出转换回一个数字来控制我的逻辑。

有关更清洁方法的任何建议吗? (使用逻辑演示功能感觉不对)

1 个答案:

答案 0 :(得分:0)

您可能需要考虑下限并执行以下操作:

float p = 7.9999996;
float q= floor((p+0.005)*100)/100;

以两位x.xx

进行舍入

对于负数,您需要以相同的方式使用ceil:)