변수의 내용이 숫자인지 어떻게 확인합니까?

 
안녕하세요, 여러분. 변수의 내용, 특히 채팅의 텍스트 상자 개체의 내용이 숫자인지 어떻게 확인 합니까? 다음을 시도했지만 작동하지 않았습니다.

ObjectSetString ( 0 , "SimultaneousReleaseIndex" , OBJPROP_TEXT , "Four" );

if ( MathIsValidNumber ( ObjectGetString ( 0 , "SimultaneousReleaseIndex" , OBJPROP_TEXT ))== true ){ Print ( "Object Text Is Numeric" );}
사실이면 OBJPROP_TEXT가 숫자인지 여부를 계속 true로 표시합니다. 문제에 대한 해결책은 무엇입니까? 미리 감사드립니다.
 

MathIsValidNumber는 그런 식으로 작동하지 않습니다. "4" 또는 "FOUR" 또는 "vier" 또는 "quatre" 또는 "quatro"보다 더 이상 "4"를 4로 이해하지 않습니다.

"Four"를 double로 캐스팅하면 결과는 0입니다.

0은 유효한 숫자이므로 함수 가 true를 반환합니다.

이를 달성하려면 단어를 숫자로 변환하는 고유한 기능을 구축해야 합니다.

컴파일러가 암시적 변환에 대해 경고했어야 합니다.

#property strict

코드 상단에?

 
honest_knave :

MathIsValidNumber는 그런 식으로 작동하지 않습니다. "4" 또는 "FOUR" 또는 "vier" 또는 "quatre" 또는 "quatro"보다 더 이상 "4"를 4로 이해하지 않습니다.

"Four"를 double로 캐스팅하면 결과는 0입니다.

0은 유효한 숫자이므로 함수 가 true를 반환합니다.

이를 달성하려면 단어를 숫자로 변환하는 고유한 기능을 구축해야 합니다.

컴파일러가 암시적 변환에 대해 경고했어야 합니다.

#property strict

코드 상단에?

나는 당신이 질문을 이해하지 못했다고 생각합니다. 위의 코드를 작성했으며 "4"가 숫자가 아니기 때문에 컴파일러가 false를 반환할 것으로 예상됩니다. 그러나 true를 반환합니다("4"는 숫자임을 의미). 어떻게 적절하게 코딩할 수 있습니까? "4"를 숫자로 변환하도록 요청하지 않습니다.
 

나는 당신이 대답을 이해하지 못하는 것 같아요

"Four" 또는 "banana" 또는 "MetaQuotes"와 같은 문자열을 두 배로 입력하면 결과는 0입니다.

0은 유효한 숫자입니다.

#property strict를 사용하고 있다면 컴파일러에서 이 문제를 경고했을 것입니다.

"숫자"가 0이 아닌지 테스트할 수 있지만 의도적으로 0으로 입력했는지 아니면 캐스팅에서 0으로 변환되었는지 여부를 트랩할 수 없습니다.

   ObjectSetString ( 0 , "SimultaneousReleaseIndex" , OBJPROP_TEXT , "Four" );
   double as_double = ( double ) ObjectGetString ( 0 , "SimultaneousReleaseIndex" , OBJPROP_TEXT );
   if (as_double != 0 && MathIsValidNumber (as_double)) Print ( "Object Text Is Numeric" );
 
honest_knave :

나는 당신이 대답을 이해하지 못하는 것 같아요

"Four" 또는 "banana" 또는 "MetaQuotes"와 같은 문자열을 두 배로 입력하면 결과는 0입니다.

0은 유효한 숫자입니다.

#property strict를 사용하고 있다면 컴파일러에서 이 문제를 경고했을 것입니다.

내 초기 코드를 다시 확인 하십시오. 약간의 수정만 했습니다. 그것은
ObjectSetString ( 0 , "SimultaneousReleaseIndex" , OBJPROP_TEXT , "Four" );
그리고 아니
ObjectSetInteger ( 0 , "SimultaneousReleaseIndex" , OBJPROP_TEXT , "Four" );
불편을 드려 죄송합니다. 이제 답을 수정할 수도 있습니다. 친절한 답변을 기대하면서 감사합니다. 나는 #property strict를 사용하고 있다고 생각하지 않습니다.
 

제 글을 다시 읽어주세요.

0이 유효한 숫자라는 데 동의하십니까?

 
honest_knave :

제 글을 다시 읽어주세요.

0이 유효한 숫자라는 데 동의하십니까?

물론 0은 유효한 숫자입니다. 왜 물어?
 
macpee :
물론 0은 유효한 숫자입니다.

그래서 내 대답의 어떤 부분을 이해하지 못합니까?

다시 반복하려면:

정직한_knave :

"Four"를 double로 캐스팅하면 결과는 0입니다.

0은 유효한 숫자이므로 함수 가 true를 반환합니다.

정직한_knave :

"Four" 또는 "banana" 또는 "MetaQuotes"와 같은 문자열을 두 배로 입력하면 결과는 0입니다.

0은 유효한 숫자입니다.

 
honest_knave :
그래서 내 대답의 어떤 부분을 이해하지 못합니까?
그러나 OBJPROP_TEXT 는 "0"이 아니라 "4"입니다. 또한 "4"를 "0"으로 간주한다고 말씀하셨습니다. 이제 문제는 "4"를 두 배로 늘렸습니까? 내 코드의 어느 부분이 "Four", "banana" 또는 "Metaquote"를 두 배로 늘렸습니까?
 
macpee :
그러나 OBJ_TEXT 는 "0"이 아니라 "4"입니다. 또한 "4"를 "0"으로 간주한다고 말씀하셨습니다. 이제 문제는 "4"를 두 배로 늘렸습니까?

내가 "sdgfjhsdfkjdshfkjsfdhskdjh"로 번호를 만들라고 하면 어떤 번호를 주시겠습니까?

 
honest_knave :

내가 "sdgfjhsdfkjdshfkjsfdhskdjh"로 번호를 만들라고 하면 어떤 번호를 주시겠습니까?

물론 0. 그러나 내가 작성한 코드에 해당하는 질문은 "sdgfjhsdfkjdshfkjsfdhskdjh"에서 숫자를 만들도록 요청하지 않았다는 것입니다. 그러나 "sdgfjhsdfkjdshfkjsfdhskdjh"가 숫자인지 여부를 결정합니다. 그래서 "sdgfjhsdfkjdshfkjsfdhskdjh"에서 숫자를 만들 수 있다고 생각합니다. 그러나 "sdgfjhsdfkjdshfkjsfdhskdjh"는 숫자가 아니라는 사실이 남아 있습니다.
사유: