「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板

(#2050) 文字列比較として正常。 - うぇいく (2012-10-17 22:48) /中 未処理
なでしこに限りませんが・・・1つ1つ見てゆくと、どれも正常です。

 型が緩い言語で、数値にしか適用できない演算子を適用して、型を暗黙的に変換するというのは、わりとポピュラーな方法です(大抵は、0に足したり、0を引いたりする)。演算される前に、暗黙的に型が変換されて、結果もその型に合ったものになります。演算結果を適用した結果は、数値になりますので、数値の0との比較は期待通りに動きます。

 その前は数値だったとか、形式指定使ったとか関係なく、比較している時点では、「15.123」と「5.432」の文字列比較です。
 文字列同士では、最初の文字から順に文字コード(か、辞書順)が比較されてゆきますから、「1」と「5」を比較して、「5」の方が大きいというのは、あなたが期待した動作とは違うかもしれませんが、正常な動作です。あくまでも、たまたま数値に見える、文字列同士の比較になります。

10より大きな数値で検証する場合でも、判定距離120.5と距離Aを50.1のように、文字列と数値での比較で結果が逆転する関係しないと、「たまたま数値比較の結果と同じになるため正しく見えて」しまいます(同じ桁の数値は、検証に使う値としては不適切。)

結局のところ、数値として比較したい場合は、何らかの方法で(暗黙的でも明示的でも)必ず数値に変換する必要があります。
(もし、文字列と数値の比較演算子が異なるなら、数値用の比較演算子を使うのが簡単ですが、なでしこには無いかもしれません)

これを言語として無理にしようとすると、数値に変換可能な文字列同士の比較は、常に数値比較するように変更することになると思いますが、おそらくは、どちらかというと不便になるのではないかと思います。
形式指定した後の数値比較 / ぴろりん (2012-10-17 20:57) (#2049)/ 中 未処理
  文字列比較として正常。 / うぇいく (2012-10-17 22:48) (#2050)/ 中 未処理
  文字列比較なんですね!ありがとうござい.. / ぴろりん (2012-10-18 00:04) (#2051)/ 中 解決

(#2050)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能