我正在尝试使用printf
函数来给出一个浮点变量的值,我只能使用%d
,这是我到目前为止所做的:
.............................
float var =0.0;
// the value will set from another function
var *= 100000;
printf("X[%d.%04d] \n",(int)(var / 100000),((int)var)%100000));
...............
这对正浮点值有效,但当我得到负数时,它将如何显示:
for:-0.4578 -> 0.-4578
正如你可以说标志不在正确的位置,我的问题是,如果有一种方法可以做到这一点,而不使用例如:switch case
statemente或类似的东西?
提前致谢 !
答案 0 :(得分:2)
您可以使用不同的格式字符串来表示正数和负数:
char *format;
int v = var * 100000;
if (v < 0) {
format = "X[-%d.%04d] \n";
v = -v;
} else {
format = "X[%d.%04d] \n";
}
printf(format, v/100000, v%100000);
这种方式v
在printf
中始终为正,并且该符号嵌入到您传递的格式字符串中。仅使用%d
格式。