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