如何避免显示浮动:-0.0

时间:2014-01-09 10:09:13

标签: c++ c floating-point

我想用1位数显示我的浮点数,避免显示此情况 -0.0

我的程序是Arduino板的C / C ++开发。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

(适用于C和C ++)。

IEEE754浮点定义有符号零。这是你在这里观察到的效果。作为某些计算的结果,可能会获得负零,例如,作为负数的算术下溢的结果,或−1.0 * 0.0,或简称为−0.0

-0.0定义为等于0.0。

一种解决方案是将其作为特例进行分析:x == -0.0 ? /*handle -0.0 and 0.0 here: e.g. ::fabs(x)*/ : /*non-zero cases here*/

请参阅http://en.wikipedia.org/wiki/Signed_zero

答案 1 :(得分:1)

您可以尝试使用c三元运算符以这种方式打印。

 printf("%2.1f",(f<0 &&f >-1)?-f:f);

这里f是浮点变量,如果你得到f的值为-0.0001,函数将打印为0.0。

答案 2 :(得分:0)

为避免显示负号,您需要在显示之前实际舍入数字,因为数字的+/-与精度无关