繁体   English   中英

Printf数值右对齐

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM