如何在1000,10000,100000,1000000等输入中给出的数字的数字之间输入逗号,并将数字的数字分开 1000 万 100000 1,000,000作为输出
C中的任何函数(库)是否为此创建程序?
答案 0 :(得分:0)
strtol()
并手动跳过逗号。'
添加到正确的printf()
输出说明符,即printf("%'d", 1000);
应将int
值1000
打印为1,000
。这取决于您的区域设置,请参阅the manual page for details。答案 1 :(得分:0)
使用非标准'
打印标记并设置区域设置:
#include <locale.h>
#include <stdio.h>
int main()
{
int value = 1234567;
if (!setlocale(LC_ALL, "en_US.UTF-8")) {
fprintf(stderr, "Locale not found.\n");
return 1;
}
printf("%'d\n", value);
return 0;
}
但是使用 x mod 3 和Duff's device你可以建立你自己的(便携式)功能:
#include <stdio.h>
#include <stdlib.h>
char *thousand_sep(long x)
{
char s[64], *p = s, *q, *r;
int len;
len = sprintf(p, "%ld", x);
q = r = malloc(len + (len / 3) + 1);
if (r == NULL) return NULL;
if (*p == '-') {
*q++ = *p++;
len--;
}
switch (len % 3) {
do {
*q++ = ',';
case 0: *q++ = *p++;
case 2: *q++ = *p++;
case 1: *q++ = *p++;
} while (*p);
}
*q = '\0';
return r;
}
int main(void)
{
char *s = thousand_sep(1234567);
printf("%s\n", s);
free(s);
return 0;
}
输出:
1,234,567
修改强>
如果我想在java中做同样的事情那么??
抱歉,我不懂Java,也许有用(使用正则表达式的javascript):
Number.prototype.thousand_sep = function(decs){
var n = this.toFixed(decs).toString().split('.');
n[0] = n[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
return n.join('.');
};
...
var x = 1234567;
alert(x.thousand_sep(0));
答案 2 :(得分:0)
对于java(在某处评论中由OP询问),请使用:
String formattedString = NumberFormat.getInstance().format(number);
如果您需要特定的区域设置:
String formattedString = NumberFormat.getInstance(Locale.FRENCH).format(number);
如果您需要其他数字格式化程序(货币,百分比等):
NumberFormat.getCurrencyInstance().format(number);
NumberFormat.getIntegerInstance().format(number);
NumberFormat.getPercentInstance().format(number);
[每个都可以传递给Locale]
要更好地控制格式选项,您可以切换到DecimalFormat:
new DecimalFormat("0,000.00").format(number);
我建议您浏览这两个类(NumberFormat和DecimalFormat)以了解您的可能性。
答案 3 :(得分:0)
我找不到任何可以解决此问题的库。
我已经编写了一些代码来执行所需的操作。
#include "stdio.h"
#include "string.h"
void func (int in, char * modified_int)
{
char my_int[1000];
sprintf (my_int, "%d", in);
int len = strlen(my_int);
int curr_index = len + len/3 - 1;
modified_int[curr_index+1] = '\0';
int modulo_3 = 0;
for (int i = len-1; i >= 0; i--, curr_index--, modulo_3++)
{
char abc = my_int[i];
modified_int[curr_index] = abc;
if ((modulo_3 == 2) && (i != 0))
{
curr_index--;
modified_int[curr_index] = ',';
modulo_3 = -1;
}
}
}
int main ()
{
char my_int[1000];
int n = 1000;
func(n, my_int);
printf("%s\n", my_int);
return 0;
}
如果它无法解决您的问题,请告诉我。