トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     parseFloat("0.95") == 0.95 でfalseとなる
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
miyaj
Åê¹ÆNo.35917
投稿日時: 2007-11-1 20:03
新米
居住地:
投稿: 13
使用環境:
Win7
FlashCS5
parseFloat("0.95") == 0.95 でfalseとなる
どうしてもわからない所があり、質問させて下さい。

内容はほぼタイトルの通りなのですが、

trace(parseFloat("0.95") == 0.95);

を実行すると、「false」が出力されます。
これは何故でしょうか。
また、trueとするにはどうしたらよいのでしょうか。

ちなみに、

trace(parseFloat("0.96") == 0.96);

とすると、trueが出力されます。
どうにも納得がいきません

よろしくお願いいたします。
Tonpoo (gaienboy改め)
Åê¹ÆNo.35919
投稿日時: 2007-11-1 20:30
職人
居住地: 東京・神宮前
投稿: 717
使用環境:
Windows 7 Professional,
Flash CS5 Pro,
Flash Player 10,1,102,64
Re: parseFloat("0.95") == 0.95 でfalseとなる
こんにちは、gaienboyです。解決アドバイスじゃなくてすいません。
いろいろやってみました↓
val = parseFloat("0.95");

trace(val);	//0.95
trace(val == 0.95);	//false
trace(val === 0.95);	//false
trace(typeof(val));	//number
trace(val - 0.95);	//1.11022302462516e-16
trace(val + 1);	//1.95


引き算もおかしなことになってますよね


----------------
Tonpoo (a.k.a. gaienboy)
Tonpoo.com / TONPOOBLOG / twitter@tonpootwit

ひろゆき
Åê¹ÆNo.35920
投稿日時: 2007-11-1 21:09
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: parseFloat("0.95") == 0.95 でfalseとなる
F-site | まるめ虫」の仕業ではないかと。

val = parseFloat("0.95");

trace(val == 0.95);	// false
trace(val*100 == 95);	// true



浮動小数点の演算について」も参考まで。


----------------
質問する際は、回答者に具体的な情報を与えてください。

ニノミヤ カズノリ
Åê¹ÆNo.35922
投稿日時: 2007-11-1 22:52
職人
居住地: 東京
投稿: 430
使用環境:
CS4
.4.11, .5.7
XP Pro(sp3)
Flash Player 10,0,22,87,
AIR 1.5.1,
IE 5.5 & 6 & 7 & 8,
Firefox 2.0.0.20 & 3.0.11 & 3.5,
Opera 9.64,
Safari 4,
Google Chrome 2.0.172.31,
Netscape 7.1
Re: parseFloat("0.95") == 0.95 でfalseとなる
同じ様な症状で悩んでた方がこの方法で回避していました。

val = parseFloat("0.95");
trace(val.toString() == 0.95.toString()); //true
//valはtoStringメソッドを使わなくてもtrueが返ってくるが念の為

ちなみにAS3.0ではこのバグ直ってますね。
ひろゆき
Åê¹ÆNo.35923
投稿日時: 2007-11-1 22:56
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: parseFloat("0.95") == 0.95 でfalseとなる
引用:
ニノミヤ カズノリさんは書きました:
val = parseFloat("0.95");
trace(val.toString() == 0.95.toString()); //true
//valはtoStringメソッドを使わなくてもtrueが返ってくるが念の為

おおっ!
見た目(文字列)通りにしておいて、評価しようってことですね!


----------------
質問する際は、回答者に具体的な情報を与えてください。

miyaj
Åê¹ÆNo.35981
投稿日時: 2007-11-5 21:18
新米
居住地:
投稿: 13
使用環境:
Win7
FlashCS5
Re: parseFloat("0.95") == 0.95 でfalseとなる
返信が遅くなってしまい申し訳ありません。

引用:

ひろゆきさんは書きました:
引用:
ニノミヤ カズノリさんは書きました:
val = parseFloat("0.95");
trace(val.toString() == 0.95.toString()); //true
//valはtoStringメソッドを使わなくてもtrueが返ってくるが念の為

おおっ!
見た目(文字列)通りにしておいて、評価しようってことですね!


おお!すばらしいですね。これであればその場ですぐ適用できそうです。どうもありがとうございました。
それにしても、AS3で治っているという事は、やはりバグなのでしょうか。それとも丸め虫でしょうか。。。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops