删除C中的浮动无用0

时间:2017-05-07 12:47:41

标签: c floating-point

如何删除不会影响数值的零

 float X1 = (-b + sqrt(pow(b,2) - (4*a*c)))/(2*a);

有时如果X1是没有小数的数字,它将是X1=4.0000 我怎么能避免那个

{编辑}

1 个答案:

答案 0 :(得分:2)

选项#1

使用printf

%g
  

除非请求替代表示,否则尾随零   删除,如果没有小数,也删除小数点字符   部分遗留下来。

代码示例:

double x = 4.0;
printf("DEBUG:%f\n", x);
printf("X1=%g\n", x);

输出:

DEBUG:4.000000
X1=4

选项#2

将其输出为字符串并进行处理。

代码示例:

double x = 4.0;
char buff[48];
int len;
len = snprintf(buff, sizeof buff, "%.4f", x);
printf("DEBUG:%s\n", buff);
char *p = buff + len -1;
while(*p == '0'){
    *p-- = 0;
}
if(*p == '.')
    *p = 0;
printf("X1=%s\n", buff);

输出:

DEBUG:4.0000
X1=4