使用 %d 的负浮点数的 printf
printf for negative float numbers using %d
我正在尝试使用 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));
...............
这在正浮点值下工作正常,但当我得到负值时,它将如何显示:
为:-0.4578 -> 0.-4578
正如您所说的那样,标志不在正确的位置,我的问题是是否有办法在不使用例如 switch case
statemente 或类似的东西的情况下做到这一点?
提前致谢 !
您可以通过对正数和负数使用不同的格式字符串来实现:
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
格式。
我正在尝试使用 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));
...............
这在正浮点值下工作正常,但当我得到负值时,它将如何显示:
为:-0.4578 -> 0.-4578
正如您所说的那样,标志不在正确的位置,我的问题是是否有办法在不使用例如 switch case
statemente 或类似的东西的情况下做到这一点?
提前致谢 !
您可以通过对正数和负数使用不同的格式字符串来实现:
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
格式。