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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     数字と文字
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
wowow
Åê¹ÆNo.38477
投稿日時: 2008-4-18 11:17
新米
居住地:
投稿: 28
使用環境:
WinVista,Flash MX2004
数字と文字
テキストボックス(テキスト入力)変数名aと
テキストボックス(テキスト入力)変数名bを
ボタンシンボルを押すと足し算され
テキストボックス(ダイナミックテキスト)変数名ansに
答えを表示させました。

たとえば
aに1
bに2
と打ってボタンを押すと普通はansに3が表示されますが、
12と出ます。
どうしてでしょうか?
引き算、掛け算、割り算なら普通に答えが出ました。


ボタンに記述したスクリプト
on(release){
ans = a + b;
}

Tonpoo (gaienboy改め)
Åê¹ÆNo.38478
投稿日時: 2008-4-18 11:24
職人
居住地: 東京・神宮前
投稿: 717
使用環境:
Windows 7 Professional,
Flash CS5 Pro,
Flash Player 10,1,102,64
Re: 数字と文字
gaienboyです。

テキスト入力に入力されている値が、数値ではなく文字列として扱われているため
にそうなるのだと思います。下記のようにすれば解決するのではないでしょうか。
on(release){
	ans = parseInt(a) + parseInt(b);
}

引き算、かけ算、割り算で数値として演算されたのは、文字列は引いたり掛けたり
割ったりという演算ができないため、演算子の左右の値が自動的に数値として判断
された、とかそんなところかと思います。

余談ですが、テキスト入力やテキストボックスを用いるとき、「変数:」欄を使う
のではなく、インスタンス名を使って識別し、TextField.textプロパティを使って
アクセスしたほうがいいように思います。
on(release){
	ans.text = parseInt(a.text) + parseInt(b.text);
}


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

wowow
Åê¹ÆNo.38479
投稿日時: 2008-4-18 11:33
新米
居住地:
投稿: 28
使用環境:
WinVista,Flash MX2004
Re: 数字と文字
ありがとうございます。
ところで、足し算する場合
parseInt()
は必須なのでしょうか?
Tonpoo (gaienboy改め)
Åê¹ÆNo.38480
投稿日時: 2008-4-18 11:40
職人
居住地: 東京・神宮前
投稿: 717
使用環境:
Windows 7 Professional,
Flash CS5 Pro,
Flash Player 10,1,102,64
Re: 数字と文字
普通に数値を扱うならば、parseInt()などを使わなくても足し算は可能です。
a = 1;
b = 2;
trace(a+b);	//3が出力される

今回の場合は、テキストフィールド(テキスト入力)上の値であったために、おそ
らくデフォルトでは文字列として扱われてしまったのではないでしょうか。


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

野中文雄
Åê¹ÆNo.38481
投稿日時: 2008-4-18 11:50
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 数字と文字
ご質問の意図が、よくわかりません。

[1]文字と文字とを演算子+で「足し算」すると、ふたつの文字が連結されます。

例: ans = "1"+"2" // ans: "12"

[2]数値と数値を演算子+で「足し算」すると、ふたつが数値演算で加算されます。

例: ans = 1+2 // ans: 3

これらの結果で問題がなければ、parseInt()関数を使う必要はありません。

[3]文字として認識されている数字に対して、数値演算の加算を行いたい場合には、「足し算」の前に文字を数値に変換しなければなりません。

[3-1]parseInt()関数を使うと、文字の数字を整数に変換します。

例: ans = parseInt("1")+parseInt("2") // ans: 3

ご質問の意図が、parseInt()関数以外を使って文字から数値への変換ができないのか、ということでしたら、他の関数も使えないことはありません。

[3-2]parseFloat()関数を使うと、文字の数字を浮動小数値に変換します。

例: ans = parseFloat("1")+parseFloat("2") // ans: 3

[3-3]Number()関数を使うと、文字の数字を数値に変換します。

例: ans = Number("1")+Number("2") // ans: 3

なお、足し算以外であれば数値演算の結果が得られるのは、足し算以外の四則演算は文字列には定義されていないため、文字から数値への変換が自動的に行われるからです。

[4]したがって、つぎのようにして数値演算の足し算を行うこともできます。ただし、お勧めはしません。

例: ans = "1"*1+"2"*1 // ans: 3
引用:
wowowさんは書きました:
ところで、足し算する場合
parseInt()
は必須なのでしょうか?


----------------
 

wowow
Åê¹ÆNo.38482
投稿日時: 2008-4-18 11:59
新米
居住地:
投稿: 28
使用環境:
WinVista,Flash MX2004
Re: 数字と文字
テキスト入力された数字を計算する時に必要ということでしょうか?

では、
テキスト入力ボックスのインスタンス名a_txt
テキスト入力ボックスのインスタンス名b_txt
ダイナミックテキストのインスタンス名ans_txt
だとして、
a = a_txt.text;
b = b_txt.text;
c = a + b;
ans_txt/text = c;
とやったときもparseInt()が必要ということでしょうか?
野中文雄
Åê¹ÆNo.38483
投稿日時: 2008-4-18 12:05
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 数字と文字
実際に試してご覧になった方が、ご自分の知識として身につくと思いますよ。
引用:
wowowさんは書きました:
では、
テキスト入力ボックスのインスタンス名a_txt
テキスト入力ボックスのインスタンス名b_txt
ダイナミックテキストのインスタンス名ans_txt
だとして、
a = a_txt.text;
b = b_txt.text;
c = a + b;
ans_txt/text = c;
とやったときもparseInt()が必要ということでしょうか?


----------------
 

wowow
Åê¹ÆNo.38657
投稿日時: 2008-5-2 15:26
新米
居住地:
投稿: 28
使用環境:
WinVista,Flash MX2004
Re: 数字と文字
解決しました。
返事が遅くてすみません。
とんび
Åê¹ÆNo.38673
投稿日時: 2008-5-3 16:28
Bak@Fla大巨匠
居住地: 佐賀県 杵島郡
投稿: 275
使用環境:
MX
CS3
:Flash CS6:CS6
.7.5
Re: 数字と文字
 解決した時は、どのようにして解決できたか書いておくと、後でこのスレッドを見たひとの参考になるので、書いておくことをオススメします。

 ちなみに、解決して思っていたら、実は全くの勘違いでたまたま解決したように見えていただけ、なんてこともありがちです。

 つまり、読者に対しても自分自身に対してもも、どのようにして解決されたか書いておいた方が得です。


----------------
鳶嶋工房

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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