如何在C中将float拆分为两个整数

use*_*607 4 c format-specifiers

下面我试图设置一个格式说明符,但每次调用该函数时我都想以不同的方式进行.关键是打印浮点数Data_Ave.在一个实例中,我想要说明符%2.3f,因此我将为sig_figs_before传递函数a 2,为sig_figs_after传递3.在下一个例子中,我想要%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
  }
Run Code Online (Sandbox Code Playgroud)

我很确定这不会起作用,所以我想将浮动分成两个整数并按照这样打印:

sprintf(msgBody,"%i.%i, ", int_value, decimal_value);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何正确拆分浮子.有什么建议?

Mar*_*ian 5

你要:

sprintf(msgBody,"%*.*f, ", before_decimal+after_decimal+1, after_decimal, Data_Ave);
Run Code Online (Sandbox Code Playgroud)

请注意,您可以使用*整数参数指定宽度.另请注意,在格式中%N.Mf,N是打印数字的总大小(包括小数,点,符号,指数,填充等),并且M是小数精度.这就是为什么,在你的情况下,第一个数字应是before_decimal+after_decimal+1before_decimal唯一的.