【发布时间】:2014-03-01 07:47:23
【问题描述】:
下面我正在尝试设置格式说明符,但每次调用该函数时我都想以不同的方式进行设置。关键是打印浮点Data_Ave。在一个实例中,我想要说明符 %2.3f,因此我将传递函数 2 用于 sig_figs_before 和 3 用于 sig_figs_after。在下一个实例中,我想要 %1.4f,所以我会传递这些整数。
char * Send_Data(float Data[10], const char* SUBJECT_SEND_NAME, char *Data_Backup, int sig_figs_before, int sig_figs_after)
{
float Data_Ave = ((Data[0] + Data[1] + Data[2] + Data[3] + Data[4] +
Data[5] + Data[6] + Data[7] + Data[8] + Data[9])/10);
sprintf(msgBody,"%%i.%if, ", before_decimal, after_decimal, Data_Ave);
... //Some more code
}
我很确定这行不通,所以我想把浮点数分成两个整数并像这样打印:
sprintf(msgBody,"%i.%i, ", int_value, decimal_value);
但我不知道如何正确拆分浮动。 有什么建议吗?
【问题讨论】:
-
这行不通。想想“2.03”,这将导致 before_decimal=2 after_decimal=3 并结合 2.3。我不明白你想要做什么?为什么不直接冲刺fload?有一些方法可以格式化这些。
标签: c format-specifiers