[英]Printf Numerical Right Justify
我正在嘗試格式化一個數值,其值從0到9,999。 我希望最有效的2個數字始終顯示,即
5000-> 50
0000-> 00
如果最低有效數字之一不為零,則應顯示它們,即
150-> 015
101-> 0101
可以用一些黑客手段來完成,但是C的printf可以直接做到嗎?
是的,您可以為此使用printf
int v = 5000;
if ((v % 100) != 0)
printf("%04d", v);
else
printf("%02d", v/100);
丑陋,但據我所知:
printf("%d", value / 1000);
printf("%d", (value % 1000) / 100);
if(value % 100) printf("%d", (value % 100) / 10);
if(value % 10) printf("%d", value % 10);
我會嘗試打更多的高爾夫球:
printf("%02d", value / 100);
if(value % 10) printf("%02d", value % 100);
else if(value % 100) printf("%d", (value % 100) / 10);
int hi = value / 100, lo = value % 100;
printf(lo ? "%02d%0*d" : "%02d", hi, 1 + !!(lo % 10), lo % 10 ? lo : lo / 10);
printf("%d", v/(v%100?v%10?100:10:1));
嘗試這個:
printf("%.*d", 4-!(v%100)-!(v%10), v/(v%100?v%10?100:10:1));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.