右对齐c中的数字?
我有一个代码片段,如下所示-右对齐c中的数字?,c,text-alignment,C,Text Alignment,我有一个代码片段,如下所示- int main() { double firstNumber = 245.3252; double secondNumber = 32.4324; printf("This is my first number: %.2f", firstNumber); printf("And what's gonna be in the front if my second number: %.2f", secondNumber); return 0; }
int main() {
double firstNumber = 245.3252;
double secondNumber = 32.4324;
printf("This is my first number: %.2f", firstNumber);
printf("And what's gonna be in the front if my second number: %.2f", secondNumber);
return 0;
}
这种代码的问题是它会给我一个输出,如下所示-
这是我的第一个号码:245.32
如果我的第二个号码是32.43,前面会是什么
但是,我希望输出如下所示(预期输出)-
这是我的第一个号码:245.32
如果我的第二个号码是32.43,前面会是什么
我试图使用宽度修饰符,比如%20s左右,但是如果我的第一个数字是十位数字,那么对齐会再次消失。有人能告诉我怎样才能使它们看起来完全对齐吗?谢谢 右对齐实际上是默认设置,您只需确保正确指定宽度。你想要这样的东西:
printf("This is my first number: %8.2f", firstNumber);
printf("And what's gonna be in the front if my second number: %8.2f", secondNumber);
右对齐实际上是默认设置,您只需要确保正确指定宽度。你想要这样的东西:
printf("This is my first number: %8.2f", firstNumber);
printf("And what's gonna be in the front if my second number: %8.2f", secondNumber);
最简单的方法是:在第一条语句的格式字符串中添加必要的空格字符,同时确保您还修复了数字所使用的字符数
int main() {
double firstNumber = 245.3252;
double secondNumber = 32.4324;
printf("This is my first number: %6.2f", firstNumber);
printf("And what's gonna be in the front if my second number: %6.2f", secondNumber);
return 0;
}
最简单的方法是:在第一条语句的格式字符串中添加必要的空格字符,同时确保您还修复了数字所使用的字符数
int main() {
double firstNumber = 245.3252;
double secondNumber = 32.4324;
printf("This is my first number: %6.2f", firstNumber);
printf("And what's gonna be in the front if my second number: %6.2f", secondNumber);
return 0;
}
可以插入空格 让我们调用最长字符串
m
和另一个n
的长度。在这个例子中,最长的字符串是“如果我的第二个数字是32.43,那么前面会是什么”
现在,长度最长的字符串不需要任何修改。但是,另一个字符串需要在句子后面但在数字之前添加m-n
空格。所以,在“这是我的第一个数字”之后,但在“245.32”之前
注意:在固定宽度字体中,这将是对齐的。但是,在某些字体中,使用此方法对齐将无法正常工作,因为字符的宽度不是固定的。您可以插入空格 让我们调用最长字符串
m
和另一个n
的长度。在这个例子中,最长的字符串是“如果我的第二个数字是32.43,那么前面会是什么”
现在,长度最长的字符串不需要任何修改。但是,另一个字符串需要在句子后面但在数字之前添加m-n
空格。所以,在“这是我的第一个数字”之后,但在“245.32”之前
注意:在固定宽度字体中,这将是对齐的。但是,在某些字体中,使用此方法对齐将无法正常工作,因为字符的宽度不固定。格式化前导文本
int main(void) {
double Number[] = { 245.3252, 32.4324 };
const char *text[] = {"This is my first number:",
"And what's gonna be in the front if my second number:"};
// Find or set max width of text
int width = max(strlen(text[0]), strlen(text[1]));
// Calculate or set max width of numbers
int maxnumwidth = 6;
int i;
for (int i= 0; i < 2; i++) {
printf("%-*s %*.2f\n", width, text[i], maxnumwidth, Number[i]);
}
return 0;
}
int main(无效){
双倍数字[]={245.3252,32.4324};
const char*text[]={“这是我的第一个数字:”,
“如果我的第二个号码是:”};
//查找或设置文本的最大宽度
int width=max(strlen(文本[0]),strlen(文本[1]);
//计算或设置数字的最大宽度
int maxnumwidth=6;
int i;
对于(int i=0;i<2;i++){
printf(“%-*s%*.2f\n”,宽度,文本[i],最大宽度,数字[i]);
}
返回0;
}
%-*s
:-
左对齐*
从参数获取宽度。s
String
%*.2f
:*
从参数获取宽度。.2
打印到小数点后两位。f
float或double格式化前导文本
int main(void) {
double Number[] = { 245.3252, 32.4324 };
const char *text[] = {"This is my first number:",
"And what's gonna be in the front if my second number:"};
// Find or set max width of text
int width = max(strlen(text[0]), strlen(text[1]));
// Calculate or set max width of numbers
int maxnumwidth = 6;
int i;
for (int i= 0; i < 2; i++) {
printf("%-*s %*.2f\n", width, text[i], maxnumwidth, Number[i]);
}
return 0;
}
int main(无效){
双倍数字[]={245.3252,32.4324};
const char*text[]={“这是我的第一个数字:”,
“如果我的第二个号码是:”};
//查找或设置文本的最大宽度
int width=max(strlen(文本[0]),strlen(文本[1]);
//计算或设置数字的最大宽度
int maxnumwidth=6;
int i;
对于(int i=0;i<2;i++){
printf(“%-*s%*.2f\n”,宽度,文本[i],最大宽度,数字[i]);
}
返回0;
}
%-*s
:-
左对齐*
从参数获取宽度。s
String
%*.2f
:*
从参数获取宽度。.2
打印到小数点后两位。f
float或double那么,对于您的特定问题,请尝试以下方法:
printf(“这是我的第一个号码:\t\t\t%.2f\n”,第一个号码);
printf(“如果我的第二个数字:%.2f”,第二个数字,前面会是什么)
\t\t\t(3次)+4个在%.2f之前的空格好的,对于您的特定问题,请尝试以下方法: printf(“这是我的第一个号码:\t\t\t%.2f\n”,第一个号码); printf(“如果我的第二个数字:%.2f”,第二个数字,前面会是什么)
\t\t\t(3次)+4个空格在%.2f之前,我只是试图帮助用户解决一个特定问题。我不推荐这样做。我只是试图帮助用户解决一个特定的问题。我不推荐这个。