它發生在我身上多次與float
一起工作的變量必須printf
這些變量正確地格式化爲一定數量的小數位。我知道,在C可以使用下面的符號來指定十進制和總位數輕易格式化float
變量:C中的多個動態浮點格式說明符
// Where x and y are natural numbers
printf("%<x>.<y>f", myFloat);
而且我也知道,你可以使用兩個變量,使用*
符號dynamically format a float
這樣:
// Where x and y are natural numbers
printf("%*.*f", x, y, myFloat);
但我最近陷入了一個真正的冗餘情況:當我有相同的動態格式printf
出多個float
號碼我必須重複這兩個x
和y
變量幾千次。我總是喜歡#define
我的常量,這樣我可以很容易地在未來改變他們,所以我的計劃是這樣:
#define FLOAT_FORMAT_SIZE 10
#define FLOAT_FORMAT_PRECISION 3
int main(int argc, char *argv[]) {
// Anything I have to do...
// Output
printf("%*.*f, %*.*f, %*.*f, %*.*f",
FLOAT_FORMAT_SIZE, FLOAT_FORMAT_PRECISION, myFloat1,
FLOAT_FORMAT_SIZE, FLOAT_FORMAT_PRECISION, myFloat2,
FLOAT_FORMAT_SIZE, FLOAT_FORMAT_PRECISION, myFloat3,
FLOAT_FORMAT_SIZE, FLOAT_FORMAT_PRECISION, myFloat4
);
return 0;
}
現在你可以看到這是一個有點過於冗餘,我是想知道:是不是有任何特殊的系統常量或格式技術,我可以用來避免重複相同的值一遍又一遍每float
我printf
出?
我不想創建自己的函數來打印出這些數字,我可以明顯地做到這一點,但如果可能的話,我想在較低的級別上解決它。
在運行時動態創建格式字符串 - 就像任何其他字符串一樣。 – chux