diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index 01b4ab1..ededf32 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -3706,6 +3706,70 @@ namespace ZNsMain #endif + template + + static TTypChar* ZftTrimDecimalZero + (TTypChar* APC_Data, TTypLength& ARRI_Length) + { + /* 문자열 APC_Data 이 어떤 소수를 표현할 경우 + 소수점 뒤에 맨 끝에 있는 의미없는 0 을 지운다. + */ + typedef TTypChar TypeChar ; + typedef TTypLength TypeLength ; + + TypeChar* VPC_StartChar= APC_Data; + + if(ARRI_Length<=0) + { ARRI_Length=0; return 0; } + + TypeLength VL_PeriodPos =0; + TypeLength VL_CurrentPos=0; + + for(; VL_PeriodPos>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ + + // 마침표가 없거나, 맨 앞에 오거나 맨 끝에 오는 경우도 유효하지 않다. + + if(VL_PeriodPos<1 || VL_PeriodPos>=ARRI_Length-1) + { return APC_Data; } + /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ + + + VPC_StartChar = APC_Data + + ( VL_CurrentPos = ARRI_Length-1 ) ; + + while(VL_PeriodPos + static TTypChar* ZftTrimDecimalZero + (TTypChar* APC_Data, TTypLength& ARRI_Length)*/ + // 절대값을 가져온다. diff --git a/ZCppMain/ZtCStringEx.H b/ZCppMain/ZtCStringEx.H index 2f7d58c..357e344 100644 --- a/ZCppMain/ZtCStringEx.H +++ b/ZCppMain/ZtCStringEx.H @@ -1694,6 +1694,8 @@ namespace ZNsMain ? ::sprintf ((char* )VCA_BuffParam, /*++++++++*/ "%f", AD_DoubleParam) : ::swprintf((wchar_t*)VCA_BuffParam, CI_BuffSize, L"%f", AD_DoubleParam) ); + ZNsMain::ZftTrimDecimalZero(VCA_BuffParam, RR(VI_ResultSize)); + return (*this)(VCA_BuffParam, VI_ResultSize); /*::::::::::::::*/ }/* ZCStringBase& operator()(double AD_DoubleParam)*/ @@ -6476,59 +6478,6 @@ namespace ZNsMain }/* ZCStringBase& Trim()*/ - static TypeChar* TrimDecimalZero(TypeChar* APC_Data, TypeLength AI_LengthDec=-1) - { - /* 문자열 APC_Data 이 어떤 소수를 표현할 경우 - 소수점 뒤에 맨 끝에 있는 의미없는 0 을 지운다. */ - - TypeChar* VPC_StartChar=APC_Data; - - if(AI_LengthDec<0) - { - AI_LengthDec = GetLength(APC_Data) ; - }/* - if(AI_LengthDec<0)*/ - - if(AI_LengthDec<1) return 0; - - TypeLength VL_PeriodPos =0; - TypeLength VL_CurrentPos=0; - - for(; VL_PeriodPos>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ - - // 마침표가 없거나, 맨 앞에 오거나 맨 끝에 오는 경우도 유효하지 않다. - - if(VL_PeriodPos<1 || VL_PeriodPos>=AI_LengthDec-1) - { return APC_Data; } - ////////////////////////////////////////////////// - - - VPC_StartChar = APC_Data + - ( VL_CurrentPos = AI_LengthDec-1 ) ; - - while(VL_PeriodPos>>>>>>>>>>>>>>>>>>>>>>>>>>*/ - - return *this; + return *this; /*+++++++++++++*/ }/* ZCStringBase& TrimDecimalZero()*/ diff --git a/ZCppMain/ZtCStringStd.H b/ZCppMain/ZtCStringStd.H index b963306..32a5d7b 100644 --- a/ZCppMain/ZtCStringStd.H +++ b/ZCppMain/ZtCStringStd.H @@ -481,6 +481,8 @@ namespace ZNsMain ? ::sprintf ((char* )VCA_BuffParam, /*++++++++*/ "%f", AD_DoubleParam) : ::swprintf((wchar_t*)VCA_BuffParam, CI_BuffSize, L"%f", AD_DoubleParam) ); + ZNsMain::ZftTrimDecimalZero(VCA_BuffParam, RR(VI_ResultSize)); + return (*this)(VCA_BuffParam, VI_ResultSize); /*::::::::::::::*/ }/* ZtCStringStd& operator()(double AD_DoubleParam)*/ diff --git a/ZCppMainTest/ZtCStringBase_000.cpp b/ZCppMainTest/ZtCStringBase_000.cpp index 0afbd7c..33a47e3 100644 --- a/ZCppMainTest/ZtCStringBase_000.cpp +++ b/ZCppMainTest/ZtCStringBase_000.cpp @@ -137,7 +137,7 @@ namespace ZNsMain ZftMakeStr(VO_ZCStringStd, ZCCharView("_Z_")); - cout<<"* after ZftMakeStr()"<