2014-01-09 31 views
-1

我想顯示我的浮點數只有1位數和避免來顯示這種情況-0.0如何避免顯示一個浮點數:-0.0

我的程序是一個Arduino板的C/C++開發。

我該怎麼做?

+6

C和C++有不同的語言(特別是當它涉及到I/O)。請選一個! –

+0

你想要顯示一位數的精度嗎? 。 –

+0

是的,我想用一個數字顯示精度。這是可以的,但它只是在這種情況下浮點值等於例如在-0.000001,我想顯示0.0而不是-0.0 – Anthony

回答

0

爲避免出現負號,因爲大量的+/-是不管的精度,您將需要實際輪數的顯示之前

1

你可以嘗試打印出用c三元這樣運營商。

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

這裏f是一個浮點變量,如果你得到f的值爲-0.0001,函數將打印出0.0。

+0

數字'-0.0'不會使'f <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

+0

啊!晶圓廠(var),很好的答案。 –