簡體   English   中英

printf帶符號的整數和小數點,帶有負號的問題

[英]printf signed integer and decimal point, issue with negative sign

dsPIC33,XC16編譯器。

dat1的符號為INT16,其值16434和-16434要打印到164.34和-164.34。

printf("---: +/-180 from North   %d.%02d (deg)\n",(dat1/100),(dat1%100));

隨着dat1 = 164.34,我得到

---: +/-180 from North -164.34 (deg)

隨着dat1 = -164.34,我得到

---: +/-180 from North -164.-34 (deg)

==>如何擺脫'-.34'上的減號?

您的陳述幾乎是正確的,只是您希望擺脫第二個數字中的符號。 您可以使用此語句。

printf("---: +/-180 from North   %d.%02d (deg)\n", dat1/100, abs(dat1)%100);

編輯: 感謝@chux。

上面的代碼在-180.00至180.0度的期望范圍內工作。 如果需要更通用的方法,則應在調用abs()之前移動模運算。

延遲abs()可以避免INT_MIN出現問題,因為abs(INT_MIN)可能會產生意外的結果。 然后代碼應為:

printf("---: +/-180 from North   %d.%02d (deg)\n", dat1 / 100, abs(dat1 % 100));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM