使用%d的负浮点数的printf

时间:2015-04-02 09:37:16

标签: c printf

我正在尝试使用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或类似的东西? 提前致谢 !

1 个答案:

答案 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);

这种方式vprintf中始终为正,并且该符号嵌入到您传递的格式字符串中。仅使用%d格式。