물론 마침표(.)는 마침표와 같은 것으로 간주되고 실제로는 0인 0(.0)과 같은 것으로 간주되므로 마침표(.)는 숫자여야 합니다. 이제 마침표(.....)의 수를 늘리려고 했으나 여전히 숫자로 인식하고 있습니다. 첫 번째 마침표가 인용된 후 추가 마침표(....)를 제거하기 위해 마침표(.) 코드가 필요합니다.
if ((char1> 47 && char1< 58 ) || char1== 46 )
그건 그렇고, 코드 목록을 찾을 수 없습니다 (ASCII, 추측).
또 다른 것은 음수를 입력하는 방법입니다. 코드는 항목 시작 부분에서만 부정 기호(-)를 캡처해야 합니다.
또한 코드를 완성하기 위해. (45-20)과 같이 숫자의 중간에도 부정기호(-)를 받아 뺄셈으로 처리하여 평가한 후 코드를 사용하여야 한다.
int char1= StringGetChar (text,i);
결과가 숫자인지 확인합니다. 네 가지 기본 이진 연산 모두에 대해 이 작업을 수행할 수 있습니다. 그러나 그것은 지금 우리에게 중요하지 않습니다.
전체 아이디어는 OBT_EDIT의 OBJPROP_TEXT 속성 이 경제 달력 데이터를 받아들이고 있는 그대로의 숫자로 처리하도록 만드는 것입니다. 이것이 IsNumeric의 내장 함수가 불필요하게 큰 코드를 작성하는 것을 피하기 위해 매우 중요한 이유입니다.
macpee : 물론 마침표(.)는 마침표와 같은 것으로 간주되고 실제로는 0인 0(.0)과 같은 것으로 간주되므로 마침표(.)는 숫자여야 합니다. 이제 마침표(.....)의 수를 늘리려고 했으나 여전히 숫자로 인식하고 있습니다. 첫 번째 마침표가 인용된 후 추가 마침표(....)를 제거하기 위해 마침표(.) 코드가 필요합니다.
if ((char1> 47 && char1< 58 ) || char1== 46 )
그건 그렇고, 코드 목록을 찾을 수 없습니다 (ASCII, 추측).
또 다른 것은 음수를 입력하는 방법입니다. 코드는 항목 시작 부분에서만 부정 기호(-)를 캡처해야 합니다.
또한 코드를 완성하기 위해. (45-20)과 같이 숫자의 중간에도 부정기호(-)를 받아 뺄셈으로 처리하여 평가한 후 코드를 사용하여야 한다.
int char1= StringGetChar (text,i);
결과가 숫자인지 확인합니다. 네 가지 기본 이진 연산 모두에 대해 이 작업을 수행할 수 있습니다. 그러나 그것은 지금 우리에게 중요하지 않습니다.
전체 아이디어는 OBT_EDIT의 OBJPROP_TEXT 속성 이 경제 달력 데이터를 받아들이고 있는 그대로의 숫자로 처리하도록 만드는 것입니다. 이것이 IsNumeric의 내장 함수가 불필요하게 큰 코드를 작성하는 것을 피하기 위해 매우 중요한 이유입니다.
또는 IsNumeric 검사 후 문자열을 double로 변환하는 것이 해결책일 수 있습니다.
macpee : Of course a period (.) should be numeric since (.) is regarded as the same thing with a period and zero (.0) which is in fact zero (0). Now I tried increasing the number of period (.....) and it is still recognizing it as numeric. We need the code for period (.) so as to eliminate additional period (....) once the first period has been cited in
또 다른 것은 음수를 입력하는 방법입니다. 코드는 항목 시작 부분에서만 부정 기호(-)를 캡처해야 합니다.
여기에 에코가 있습니까?
정직한_knave :
네, 그런 것입니다.
다음 사항에 주의해야 합니다.
여러 소수점(통과할 수 있지만 통과해서는 안 됨)
+ 및 - 기호 사용(통과하지 않지만 통과해야 함)
천 단위 구분 기호 또는 소수점으로 , 사용(통과하지 않지만 통과해야 함)
다른 문자가 없는 단독 소수점(통과할 수 있지만 통과해서는 안 됨)
출연진의 능력을 넘어선 숫자
스페이스
________________________________
맥피 :
그건 그렇고, 코드 목록을 찾을 수 없습니다 (ASCII, 추측).
가자. 나는 당신이 검색 기술을 연마할 기회를 찾고 있다는 것을 알고 있습니다.
________________________________
맥피 :
전체 아이디어는 OBT_EDIT의 OBJPROP_TEXT 속성 이 경제 달력 데이터를 받아들이고 있는 그대로의 숫자로 처리하도록 만드는 것입니다. 이것이 IsNumeric의 내장 함수가 불필요하게 큰 코드를 작성하는 것을 피하기 위해 매우 중요한 이유입니다.
의도를 잘못 이해했을 수 있지만 사용자가 편집 상자에 날짜를 입력한 다음 날짜 시간으로 해석하기를 원하면(음수에 관심이 있는 경우가 아닐 수도 있음) 이것이 최선의 접근 방식인지 확신할 수 없습니다. 이유의 수.
내가 당신의 의도를 잘못 이해했을 수도 있지만 사용자가 텍스트 상자에 날짜를 입력한 다음 날짜 시간으로 해석하기를 원하면(음수에 관심이 있는 경우가 아닐 수도 있음) 이것이 최선의 접근 방식인지 확신할 수 없습니다. 이유의 수.
실제로 문제의 경제 데이터에는 날짜가 포함되지 않고 '실제', '예상', '이전' 및 '수정' 데이터만 포함됩니다. 물론 B(십억), %(백분율) 등과 같은 기호도 입력하지 않습니다. 공백 없이 순수한 실수만 입력하면 됩니다. 아이디어는 내가 "동시 출시 지수"라고 부르는 것을 계산하는 것입니다. 동시에 발표된 일련의 경제 데이터를 결합하여 하나의 데이터로 보는 것을 의미합니다. 결합된 '실제'와 결합된 '예측' 등의 관계를 보기 위해 모든 '실제'를 하나의 '실제'로, 모든 '예측'을 하나의 '예측'으로 결합합니다.
macpee : 실제로 문제의 경제 데이터에는 날짜가 포함되지 않고 '실제', '예상', '이전' 및 '수정' 데이터만 포함됩니다. 물론 B(십억), %(백분율) 등과 같은 기호도 입력하지 않습니다. 공백 없이 순수한 실수만 입력하면 됩니다. 아이디어는 내가 "동시 출시 지수"라고 부르는 것을 계산하는 것입니다. 동시에 발표된 일련의 경제 데이터를 결합하여 하나의 데이터로 보는 것을 의미합니다. 결합된 '실제'와 결합된 '예측' 등의 관계를 보기 위해 모든 '실제'를 하나의 '실제'로, 모든 '예측'을 하나의 '예측'으로 결합합니다.
{
//---
ObjectCreate ( "SimultaneousReleaseIndex1" , OBJ_LABEL , 0 , 0 , 0 );
ObjectSetString ( 0 , "SimultaneousReleaseIndex1" , OBJPROP_TEXT , "Four" );
ObjectCreate ( "SimultaneousReleaseIndex2" , OBJ_LABEL , 0 , 0 , 0 );
ObjectSetString ( 0 , "SimultaneousReleaseIndex2" , OBJPROP_TEXT , "44" );
ObjectCreate ( "SimultaneousReleaseIndex3" , OBJ_LABEL , 0 , 0 , 0 );
ObjectSetString ( 0 , "SimultaneousReleaseIndex3" , OBJPROP_TEXT , "Forty4" );
ObjectCreate ( "SimultaneousReleaseIndex4" , OBJ_LABEL , 0 , 0 , 0 );
ObjectSetString ( 0 , "SimultaneousReleaseIndex4" , OBJPROP_TEXT , ".1234567890" );
if (IsNumeric( ObjectGetString ( 0 , "SimultaneousReleaseIndex1" , OBJPROP_TEXT )))
Print ( "text1 is numeric" );
if (IsNumeric( ObjectGetString ( 0 , "SimultaneousReleaseIndex2" , OBJPROP_TEXT )))
Print ( "text2 is numeric" );
if (IsNumeric( ObjectGetString ( 0 , "SimultaneousReleaseIndex3" , OBJPROP_TEXT )))
Print ( "text3 is numeric" );
if (IsNumeric( ObjectGetString ( 0 , "SimultaneousReleaseIndex4" , OBJPROP_TEXT )))
Print ( "text4 is numeric" );
}
//---
bool IsNumeric( string text)
{
int length= StringLen (text);
for ( int i= 0 ;i<length;i++)
{
int char1= StringGetChar (text,i);
if ((char1> 47 && char1< 58 ) || char1== 46 )
continue ;
else
return ( false );
}
return ( true );
}
//+------------------------------------------------------------------+
오, 날 봐. 내가 알았어야 했다. @whroeder1 감사합니다.
또 다른 것은 음수를 입력하는 방법입니다. 코드는 항목 시작 부분에서만 부정 기호(-)를 캡처해야 합니다.
또한 코드를 완성하기 위해. (45-20)과 같이 숫자의 중간에도 부정기호(-)를 받아 뺄셈으로 처리하여 평가한 후 코드를 사용하여야 한다.
전체 아이디어는 OBT_EDIT의 OBJPROP_TEXT 속성 이 경제 달력 데이터를 받아들이고 있는 그대로의 숫자로 처리하도록 만드는 것입니다. 이것이 IsNumeric의 내장 함수가 불필요하게 큰 코드를 작성하는 것을 피하기 위해 매우 중요한 이유입니다.
물론 마침표(.)는 마침표와 같은 것으로 간주되고 실제로는 0인 0(.0)과 같은 것으로 간주되므로 마침표(.)는 숫자여야 합니다. 이제 마침표(.....)의 수를 늘리려고 했으나 여전히 숫자로 인식하고 있습니다. 첫 번째 마침표가 인용된 후 추가 마침표(....)를 제거하기 위해 마침표(.) 코드가 필요합니다.
또 다른 것은 음수를 입력하는 방법입니다. 코드는 항목 시작 부분에서만 부정 기호(-)를 캡처해야 합니다.
또한 코드를 완성하기 위해. (45-20)과 같이 숫자의 중간에도 부정기호(-)를 받아 뺄셈으로 처리하여 평가한 후 코드를 사용하여야 한다.
전체 아이디어는 OBT_EDIT의 OBJPROP_TEXT 속성 이 경제 달력 데이터를 받아들이고 있는 그대로의 숫자로 처리하도록 만드는 것입니다. 이것이 IsNumeric의 내장 함수가 불필요하게 큰 코드를 작성하는 것을 피하기 위해 매우 중요한 이유입니다.
macpee :
Of course a period (.) should be numeric since (.) is regarded as the same thing with a period and zero (.0) which is in fact zero (0). Now I tried increasing the number of period (.....) and it is still recognizing it as numeric. We need the code for period (.) so as to eliminate additional period (....) once the first period has been cited in
또 다른 것은 음수를 입력하는 방법입니다. 코드는 항목 시작 부분에서만 부정 기호(-)를 캡처해야 합니다.
여기에 에코가 있습니까?
네, 그런 것입니다.
다음 사항에 주의해야 합니다.
________________________________
그건 그렇고, 코드 목록을 찾을 수 없습니다 (ASCII, 추측).
가자. 나는 당신이 검색 기술을 연마할 기회를 찾고 있다는 것을 알고 있습니다.
________________________________
전체 아이디어는 OBT_EDIT의 OBJPROP_TEXT 속성 이 경제 달력 데이터를 받아들이고 있는 그대로의 숫자로 처리하도록 만드는 것입니다. 이것이 IsNumeric의 내장 함수가 불필요하게 큰 코드를 작성하는 것을 피하기 위해 매우 중요한 이유입니다.
의도를 잘못 이해했을 수 있지만 사용자가 편집 상자에 날짜를 입력한 다음 날짜 시간으로 해석하기를 원하면(음수에 관심이 있는 경우가 아닐 수도 있음) 이것이 최선의 접근 방식인지 확신할 수 없습니다. 이유의 수.
여기에 에코가 있습니까?
________________________________
가자. 나는 당신이 검색 기술을 연마할 기회를 찾고 있다는 것을 알고 있습니다.
________________________________
내가 당신의 의도를 잘못 이해했을 수도 있지만 사용자가 텍스트 상자에 날짜를 입력한 다음 날짜 시간으로 해석하기를 원하면(음수에 관심이 있는 경우가 아닐 수도 있음) 이것이 최선의 접근 방식인지 확신할 수 없습니다. 이유의 수.
실제로 문제의 경제 데이터에는 날짜가 포함되지 않고 '실제', '예상', '이전' 및 '수정' 데이터만 포함됩니다. 물론 B(십억), %(백분율) 등과 같은 기호도 입력하지 않습니다. 공백 없이 순수한 실수만 입력하면 됩니다. 아이디어는 내가 "동시 출시 지수"라고 부르는 것을 계산하는 것입니다. 동시에 발표된 일련의 경제 데이터를 결합하여 하나의 데이터로 보는 것을 의미합니다. 결합된 '실제'와 결합된 '예측' 등의 관계를 보기 위해 모든 '실제'를 하나의 '실제'로, 모든 '예측'을 하나의 '예측'으로 결합합니다.
그래서:
예
{
StringReplace (text, " " , NULL );
StringReplace (text, "," , NULL );
int point_cnt = 0 ;
for ( int i= StringLen (text)- 1 ; i>= 0 ; i--)
{
int this_char = StringGetChar (text,i);
if (this_char == '.' )
{
point_cnt++;
if (point_cnt> 1 ) return ( false );
if ( StringLen (text)< 2 ) return ( false );
}
else if (this_char == '+' || this_char == '-' )
{
if (i> 0 ) return ( false );
}
else if (this_char < '0' || this_char > '9' ) return ( false );
}
return ( true );
}
true를 반환하면 문자열을 숫자로 캐스팅할 수 있습니다.
그래서:
예
{
StringReplace (text, " " , NULL );
StringReplace (text, "," , NULL );
int point_cnt = 0 ;
for ( int i= StringLen (text)- 1 ; i>= 0 ; i--)
{
int this_char = StringGetChar (text,i);
if (this_char == '.' )
{
point_cnt++;
if (point_cnt> 1 ) return ( false );
if ( StringLen (text)< 2 ) return ( false );
}
else if (this_char == '+' || this_char == '-' )
{
if (i> 0 ) return ( false );
}
else if (this_char < '0' || this_char > '9' ) return ( false );
}
return ( true );
}
true를 반환하면 문자열을 숫자로 캐스팅할 수 있습니다.