変数の内容が数値かどうかを確認するにはどうしたらよいですか?

 
皆さん、こんにちは。変数の内容が数値かどうか、特にチャット上のテキストボックスオブジェクトの内容を確認 するにはどうしたらよいでしょうか。以下のように試してみましたが、うまくいきませんでした。

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

if (MathIsValidNumber(ObjectGetString(0,"SimultaneousReleaseIndex",OBJPROP_TEXT))==true){Print("Object Text Is Numeric");}
OBJPROP_TEXTが数値か どうかに関わらず、trueを表示し続けました。この問題に対する解決策は何でしょうか。ありがとうございました。
 

MathIsValidNumberはそのように動作しません。それは "Four "を "FOUR "や "vier"、"quatre"、"quatro "よりも4として理解しないでしょう。

もし "Four "をダブルとしてキャストすれば、結果は0になります。

0は有効な数なので、この関数は 真を返します。

もしこれを実現したいのであれば、単語から数値への変換を独自に組み込む必要があります。

コンパイラは暗黙の変換について警告しているはずですが・・・。

#property strict

をコードの先頭につけていますか?

 
honest_knave:

MathIsValidNumberはそのように動作しません。それは "Four "を "4 "や "FOUR"、"vier"、"quatre"、"quatro "よりも4として理解しないでしょう。

もし "Four "をダブルとしてキャストすれば、結果は0になります。

0は有効な数なので、この関数は 真を返します。

もしこれを実現したいのであれば、単語から数値への変換を独自に組み込む必要があります。

コンパイラは暗黙の変換について警告しているはずですが・・・。

#property strict

をコードの先頭につけていますか?

質問を理解していなかったようです。私は上のコードを書きましたが、"Four "は数字ではないので、コンパイラはfalseを返すと予想されます。しかし、これは真を返しています("Four "は数字であるという意味)。どうすれば適切にコーディングできるのでしょうか?私は "Four "を数字に変換せよと言っているのではありません。
 

答えを理解していないようですね

Four" や "banana" や "MetaQuotes" といった文字列を double に入れると、結果は 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" といった文字列を double に入れると、結果は 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:

4 "をダブルにキャストすると、結果は "0 "です。

0は有効な数なので、この関数は 真を返します。

honest_knave:

Four" や "banana" や "MetaQuotes" といった文字列を double に変換すると、結果は 0 になります。

0は有効な数字です。

 
honest_knave:
それで、私の回答のどの部分が理解できないのでしょうか?
しかし、OBJPROP_TEXTは"Four "であり、"0 "ではありません。また、あなたは「Four」を「0」と見なすと言いました、なぜなら... さて、問題は私が「Four」をダブルにプッシュしたかどうかです?私のコードのどの部分が "Four" や "banana" や "Metaquote" をダブルにプッシュしたのでしょうか?
 
macpee:
しかし、OBJ_TEXTは「Four」であり、「0」ではない。また、あなたは「Four」を「0」と見なすと言いました、なぜなら・・・さて、問題は、私が「Four」を2倍に押し上げたかどうかです?

sdgfjhsdfkjdshkjsfdhskdjh "から数字を作れと言ったら、どんな数字が出るかな?

 
honest_knave:

sdgfjhsdfkjdshkjsfdhskdjh "から数字を作れと言ったら、どんな数字を出すか?

もちろん0です。しかし、私が書いたコードに対応する質問は、「sdgfjhsdfkjdshfkjsfdhskdjh」から数字を作れとは言っていない、ということです。しかし、「sdgfjhsdfkjdshfkjsfdhskdjh」が数であるかどうかを判断せよということなのです。だから、「sdgfjhsdfkjdshfkjsfdhskdjh」を数字にすることはできると思うんです。しかし、「sdgfjhsdfkjdshfkjsfdhskdjh」が数字でないことに変わりはないのです。
理由: