Как проверить, является ли содержимое переменной числовым?

 
Привет всем. Как проверить, является ли содержимое переменной числовым, особенно содержимое объекта text box в чате? Я пробовал следующее, но это не сработало:

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

if (MathIsValidNumber(ObjectGetString(0,"SimultaneousReleaseIndex",OBJPROP_TEXT))==true){Print("Object Text Is Numeric");}
На самом деле он продолжал показывать true, независимо от того, является ли OBJPROP_TEXT числовым или нет. Каким может быть решение этой проблемы. Заранее спасибо.
 

MathIsValidNumber не работает таким образом. Он не поймет "Four" как 4 больше, чем "four" или "FOUR" или "vier" или "quatre" или "quatro".

Если вы переведете "Four" в двойное число, результатом будет 0.

Поскольку 0 является допустимым числом, ваша функция возвращает true.

Если вы хотите добиться этого, вам придется встроить свои собственные преобразования слов в числа.

Ваш компилятор должен был предупредить вас о неявном преобразовании ... есть ли у вас

#property strict

в верхней части вашего кода?

 
honest_knave:

MathIsValidNumber не работает таким образом. Он не поймет "Four" как 4 больше, чем "four" или "FOUR" или "vier" или "quatre" или "quatro".

Если вы переведете "Four" как двойку, результатом будет 0.

Поскольку 0 является допустимым числом, ваша функция возвращает true.

Если вы хотите добиться этого, вам придется встроить свои собственные преобразования слов в числа.

Ваш компилятор должен был предупредить вас о неявном преобразовании ... есть ли у вас

#property strict

в верхней части вашего кода?

Я думаю, вы не поняли вопрос. Я написал код выше, и ожидается, что компилятор вернет false, поскольку "четыре" не является числом. Но он возвращает true (что означает, что "четыре" - это число). Как мне правильно написать код? Я не прошу преобразовать "четыре" в число.
 

Я думаю, вы не поняли ответ.

Если вы засунете строку типа "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 является допустимым числом

Так какой части моего ответа вы не поняли?

Повторю еще раз:

honest_knave:

Если вы переведете "Four" в двойное число, результатом будет 0.

Поскольку 0 является допустимым числом, ваша функция возвращает true.

honest_knave:

Если вы вгоняете строку типа "Four" или "banana" или "MetaQuotes" в двойку, результатом будет 0.

0 - это допустимое число.

 
honest_knave:
Так какую часть моего ответа вы не поняли?
Но OBJPROP_TEXT - это "4", а не "0". Кроме того, вы сказали, что он будет рассматривать "4" как "0", поскольку ... Теперь вопрос в том, подтолкнул ли я "4" к удвоению? Какая часть моего кода подтолкнула "4" или "банан" или "Metaquote" к удвоению?
 
macpee:
Но OBJ_TEXT - это "4", а не "0". Кроме того, вы сказали, что он будет рассматривать "4" как "0", поскольку ... Теперь вопрос в том, подтолкнул ли я "4" к удвоению?

Если я скажу, что нужно составить число из "sdgfjhsdfkjdshfkjsfdhskdjh", какое число вы мне дадите?

 
honest_knave:

Если я скажу, что нужно составить число из "sdgfjhsdfkjdshfkjsfdhskdjh", какое число вы мне дадите?

Конечно, 0. Но вопрос, соответствующий написанному мной коду, заключается в том, что вы не просили меня составить число из "sdgfjhsdfkjdshfkjsfdhskdjh". А решить, является ли "sdgfjhsdfkjdshfkjsfdhskdjh" числом или нет. Поэтому я думаю, что из "sdgfjhsdfkjdshfkjsfdhskdjh" можно сделать число. Но факт остается фактом: "sdgfjhsdfkjdshfkjsfdhskdjh" не является числом.
Причина обращения: