优化这段代码 int Lcd_Modify_Param(int ikey,unsigned char mode,int _boardid,int gapid,int ioa,int digit) { float param; int len; int index = digit - 1; const float add_arr[3][8] = { {pow(10,0), 0 ,pow(10,-1),pow(10,-2), pow(10,-3),pow(10,-4)}, {pow(10,1),pow(10,0), 0 , pow(10,-1), pow(10,-2),pow(10,-3),pow(10,-4)}, {pow(10,2),pow(10,1),pow(10,0), 0 , pow(10,-1),pow(10,-2),pow(10,-3),pow(10,-4)} }; if(mode == ALTER_RUNPARAM) param = get_RunParaInfo_val(_boardid,gapid,ioa); else if (mode == ALTER_PROTECT) param = get_ActionDZInfo_val(_boardid,gapid,ioa); else if (mode == ALTER_SERI) param = gRunPara.COMMS_SerialInfo[gapid][ioa].val; if ((mode == ALTER_SERI) || (mode == ALTER_PROTECT&&(ioa == RT1064KZZ_UAB_CH || ioa == RT1064KZZ_UBC_CH || ioa == RT1064_DZ_CHZCS))) { printf("szName:%s\n",gRunPara.gap_ActionDZInfo[gapid][ioa].szName); param = SetInteger(ikey,param,digit); printf("param:%f\n", param); } else { len = snprintf(NULL, 0, "%0.3f", param); // 获取字符串长度 char buf[len+1]; // 创建缓冲区 snprintf(buf, len+1, "%0.3f", param); // 将浮点数转换为字符串 if (ikey == LCD_KEY_ADD) { if (len >= 5 && len <= 7 && index >= 0 && index <= 7) param += add_arr[len-5][index]; } else if(ikey == LCD_KEY_DECREASE) { if (len >= 5 && len <= 7 && index >= 0 && index <= 7) param -= add_arr[len-5][index]; } } if (param >= 0) { if(mode == ALTER_RUNPARAM) { if (_boardid == UNIT_PUBLIC_MX6) { if(gRunPara.ALLptRunParaInfo[ioa].IDbyBoard == 0) { if(gRunPara.ALLptRunParaInfo[ioa].IDbyPt < MX6RUN_TOTALSUM) { gRunPara.pub_RunParaInfo[gRunPara.ALLptRunParaInfo[ioa].IDbyPt].val= param; } } else { if (gRunPara.ALLptRunParaInfo[ioa].IDbyPt != RT1064KZZ_PTDX && gRunPara.ALLptRunParaInfo[ioa].IDbyPt < RUN_INNER_PARA_SIZE) { gRunPara.gap_RunParaInfo[1][gRunPara.ALLptRunParaInfo[ioa].IDbyPt].val= param; } else if ((gRunPara.ALLptRunParaInfo[ioa].IDbyPt == RT1064KZZ_PTDX || gRunPara.ALLptRunParaInfo[ioa].IDbyPt >= RT1064_DZ_YY) && gRunPara.ALLptRunParaInfo[ioa].IDbyPt < RT1064_YS_TOTALSUM) //--四个参数在 内部动作参数区 { gRunPara.gap_ActionDZInfo[1][gRunPara.ALLptRunParaInfo[ioa].IDbyPt].val= param; } } } else if (_boardid == UNIT_GAP_RT1064) gRunPara.gap_RunParaInfo[gapid][ioa].val= param; } else if (mode == ALTER_PROTECT) { if (_boardid == UNIT_PUBLIC_MX6) gRunPara.pub_ActionDZInfo[ioa].val = param; else { if (param <= 999999) gRunPara.gap_ActionDZInfo[gapid][ioa].val = param; } } else if (mode == ALTER_SERI) { if (param <= 999999) gRunPara.COMMS_SerialInfo[gapid][ioa].val = param; } } return 1; }