我試圖格式化一個數字,其值爲0到9,999。我想2最顯著位始終顯示,即Printf數字右對齊
5000 - > 50
0000 - > 00
如果其中至少顯著數字爲非零他們應顯示,即
150 - > 015
101 - > 0101
它可以與一些兩輪牛車來完成,但是可以C的printf直接做到這一點?
我試圖格式化一個數字,其值爲0到9,999。我想2最顯著位始終顯示,即Printf數字右對齊
5000 - > 50
0000 - > 00
如果其中至少顯著數字爲非零他們應顯示,即
150 - > 015
101 - > 0101
它可以與一些兩輪牛車來完成,但是可以C的printf直接做到這一點?
醜陋,但據工作,我可以告訴:
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));
我不知道我理解你的格式。如果5000變爲50爲什麼150變成015而不是15? – Mala 2011-01-27 17:58:40
我正在做美分,如果需要千分之一,如果需要千分之一。 – Jonathan 2011-01-27 18:13:49