[Silverlight2]doubleの比較ではまったお話し

 とあるアプリケーションが、MacのSafariで正常に動作しないという報告がクライアントからありました。

 多少条件判定処理が多いくらいで、それ以外はどう考えてもごくごく普通の処理をしているだけの個所なのに、確かに動作がおかしかったので、前回のエントリーで書いたSilverlightとJavaScriptの連携を使ってログを吐きつつ調査をしてみたところ、恐ろしいことに気づいてしまいました。

 double型って==演算子で比較しちゃダメなの?(´・ω・`)

 明らかに等しいdouble値の==演算子の比較が常にfalseになっているようだったので、試しにEqualsで比較するようにしてみたら、正常に動作するようになりました。
 確かにEqualsメソッドもあるけど、別に==で比較しても良いんじゃないの?ヽ(`Д´)ノ
 何も明らかに等しい値を、しかもMacのSafariだけでスルーしなくても良いと思う(´;ω;`)

 ということで、今後はdouble型の比較には、==演算子じゃなくてEqualsメソッドを使いましょう、というお話しでした。

 でも忘れちゃいそうだなー( ;^ω^)

【おまけ】

 今回データのトレースに使ったSilverlightとJavaScriptの連携

 Silverlight側では、こんなメソッドを用意しました。

public void Trace(string str)
{
  try
  {
    ScriptObject jsFunc =
        (ScriptObject)HtmlPage.Window.GetProperty("trace");
    if(jsFunc != null)
    {
      jsFunc.InvokeSelf(str);
    }
  }catch{}
}

 そしてHTML側のheadに、JavaScriptのファンクションを、

<script language="javascript">
    function trace(str) {
        var trace=  document.getElementById("trace");
        trace.innerHTML += str + "<br/>";
    }
<script>

 bodyにdivタグを一つ追加しました。

<!-- Silverlightアプリケーションの下あたり -->
<div id="trace"></div>

 あとはTraceメソッドを呼び出して文字列を渡してやれば、どんどんブラウザ内に出力してくれます。
 でも、ブラウザの表示エリアもどんどん伸びて行ってしまうので、呼び出し過ぎには注意です(^^;

トラックバック(0)

このブログ記事を参照しているブログ一覧: [Silverlight2]doubleの比較ではまったお話し

このブログ記事に対するトラックバックURL: http://ushi.donburi.net/mt/mt-tb.cgi/62

コメントする

このブログ記事について

このページは、くわが2009年4月24日 21:40に書いたブログ記事です。

ひとつ前のブログ記事は「すき家、残業代の不払いで係争中の店員を告訴」です。

次のブログ記事は「吉野家が「牛丼バーガー」の試験販売を開始」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.0.3
ぎゅう♪ぎゅう♪ぎゅう♪ぎゅう♪ ぎゅう♪ぎゅう♪ ぎゅう♪ぎゅう♪