我想用1位数显示我的浮点数,避免显示此情况 -0.0 。
我的程序是Arduino板的C / C ++开发。
我该怎么做?
答案 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*/
。
答案 1 :(得分:1)
您可以尝试使用c三元运算符以这种方式打印。
printf("%2.1f",(f<0 &&f >-1)?-f:f);
这里f是浮点变量,如果你得到f的值为-0.0001,函数将打印为0.0。
答案 2 :(得分:0)
为避免显示负号,您需要在显示之前实际舍入数字,因为数字的+/-与精度无关