No.2ベストアンサー
- 回答日時:
ご質問を見て,
私も一瞬 「if で分岐?」 もしくは 「型宣言?」 など考えてしまいました。
でも,良いアイデアをパッとは閃かない。
こういう問題でパッ閃かない場合は,
「困った時のJS(JavaScript)頼み」です。
小数点以下の編集
http://www.aichi-iic.or.jp/co/otaya-jouzou/scc/y …
上記ページのJSコードを一部引用し,その考え方を使い,
質問されている ActionScript に当てはめると次のようになります(ASもJSもほぼ同じですが)。
---コピペ可-------------------------------
// 変数の宣言(なくても良いです)
var ss1, ss2, jikan;
// 変数 jikan に 10 を掛ける
ss2 = Math.floor(jikan*10);
// 小数点以下第1位を算出
ss1 = ss2-Math.floor(ss2/10)*10;
// 整数部分と少数部分の間に "." を入れて表示
hyoji.text = Math.floor(ss2/10)+"."+ss1;
---------------------------------------
そう言われればそうですね。簡単な話でした。
JS の方が歴史も古く,人口も多いので,参考になるサイトなどがかなりあります。
それに JS なら,そのままコピペで使える場合もあります σ(^_^;) 。
検索例 ↓
参考URL:http://www.google.com/search?hl=ja&q=JavaScript+ …
おお!これはシンプルでいいですね。
お恥ずかしながらJavaScriptは全くわかりませんがActionScriptに似ていると聞いて安心しました。
使わせていただきます。
ありがとうございました。
No.1
- 回答日時:
Math.floor は小数点以下を切り捨て、整数にするメソッドです。
似たようなもので Math クラスの ceil や round というのもありますが、小数点以下を切り上げ、もしくは四捨五入にするだけの違いです。
いずれも結果を整数で返すメソッドですから、小数点以下第1位を残すためには使えません。
ActionScript では浮動小数点という方式を採用しています。
この方式の性質上、小数点以下第○位以降を切り捨てるといった算術演算はまず無理だと思います。
そこで発想を変えまして、算術演算ではない方法をあたってみましょう。
String という関数を使うと、数値も文字列として扱えるようになります。
文字列であれば String クラスのメソッドを使い、指定の桁数だけ取り出したり文字を追加したりすることも、簡単にできます。
小数を変換した文字列には、小数点を表すために必ず” . ”(半角のピリオド)が含まれます。
つまり、数値を変換した文字列の中に半角のピリオドが含まれていれば小数、なければ整数です。
小数の場合はピリオドの次の字までを取り出し、整数の場合は文字列にピリオドと 0 を追加してテキストフィールドに出力することで、整数や細かい小数でも小数点以下第1位までに揃えて表示できます。
*******************************
スクリプトにしてみますと、大体、次のようになります。
(↓各行頭に全角のスペースが入っています。コピーする際はご注意ください)
//算術処理
time = jikan / 10;
//求めた数値を文字列に変換し、加工する
time_str = new String( String( time ) );
//小数の判定
//変換した文字列にピリオドがあれば小数、なければ整数
dec_point = time_str.indexOf( "." );
//小数の場合は、ピリオドの1つ先までの文字をテキストフィールドに出力
if( dec_point != -1 )
{
hyoji.text = time_str.slice( 0 , dec_point + 2 );
}
//整数の場合は小数点と0を追加して出力
else
{
hyoji.text = time_str.concat( ".0" );
}
まず、扱う数値を String 関数で文字列に変換します。
上記のスクリプトではさしあたって変数 jikan の値を 10 で割った値を扱っていますが、この計算に特に意味はありません。
このあたりは作品に合わせて適宜変更してください。
ちなみに、数値などを文字列表現にする String 関数と、文字列を操作するために new 演算子で作成する String クラスは別物です。
前者はグローバル関数と呼ばれるもので、ActionScript で予め用意されていてユーザーが何の定義もしなくても利用できる関数です。
後者は関数ではなく、文字列の処理のために作られたクラスです。
表記が同じで紛らわしいのですが、機能は全く違います。
文字列の中に特定の文字が含まれているかどうかは、String クラスの indexOf メソッドで調べます。
指定した文字があればその位置が、なければ -1 が返ってきます。
上記のスクリプトでは、この探索の結果を変数 dec_point に格納しています。
小数かどうかは、先述の通り、半角のピリオドが含まれているか否かで判断します。
変数 dec_point に -1 が入っているのなら小数点がありませんので、整数ということになります。この場合は、小数点と 0 を文字列に追加して出力します。
小数の場合は、ピリオドとその次の文字までを取り出します。
指定の字数だけ取り出すには、同じく String クラスの slice メソッドを使います。
なぜ dec_point + 1 ではなく + 2 なのかといいますと、slice メソッドの設計上、+ 1 ではピリオドまでしか取り出せないためです。
slice メソッドでの字数の指定については、ヘルプの slice メソッドの作例をご参考になさってください。
・Flash ドキュメント:ActionScript 2.0 リファレンスガイド
String クラス > slice メソッド
http://livedocs.macromedia.com/flash/8_jp/main/0 …
*******************************
数値を扱うものでちょっと変わった処理は、数値を1桁ずつ取り出そうとすると難しいけれど文字列なら簡単にできるという発想がポイントです。
文字列に変換すると算術演算ではできない細かい芸当も可能で、3桁おきにカンマを打つ表現や1桁ずつ動くアクセスカウンターの作成など、いろいろな作品に応用できます。
ただし、文字列に変換した後は算術演算はできなくなります。
処理した後で算術演算を行う場合は、Number 関数で数値に再度変換してください。
また、文字列の処理はどうしても処理が重いので、リアルタイムで複雑な計算を行う場合は不向きです。
(まあ、ごく普通に使う分にはあまり細かく考えなくても大丈夫です)
浮動小数点には誤差が付き物です。
小数点以下第2位以降を切り捨てて計算した結果、誤差が拡大することもありえます。
高い精度を要求する計算にご利用の際はご注意ください。
そうですか。直接的な方法はActionScriptにはなかったのですね・・
今後はこの裏わざを使わせていただきます。
どうもありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい 3 2022/04/11 13:53
- その他(データベース) Accessフォームにて指定のフィールドの平均値を小数点第一位で表示できない 2 2022/08/30 17:19
- Excel(エクセル) エクセルの数式で教えてください。 3 2023/03/16 11:19
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/02/18 11:30
- Access(アクセス) Excelの質問 3 2023/02/09 14:57
- その他(パソコン・スマホ・電化製品) pthonのframeに演算結果(数値)を表示したい 1 2023/06/05 22:08
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- Excel(エクセル) エクセルの「セル書式」の「表示形式」で 2 2022/08/07 16:44
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- Excel(エクセル) 出退勤管理の遅刻・早退時間について 3 2023/08/10 15:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スマホでサイトの画像を長押し→...
-
フラッシュゲームアーカイブ2
-
ウディタで作ったゲームを公開...
-
[AS3]ループするたびに変数等は...
-
swfファイルのfc2ブログへの表...
-
Flashplayerの運用について
-
Microsoft edgeでflash player...
-
potplayerについて質問です
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
Flashコンテンツを使ったWebサイト
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ad or script について
-
Windows10重い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Google マップに同心円と文字を...
-
OS依存文字を一括で変換したい...
-
DelphiのRichEditで任意の行の...
-
ExcelのセルでA1セルはUTF-8でA...
-
OLE でACCESSデータを取得する...
-
C言語においてコマンドプロン...
-
flashかfireworksで、丸に沿っ...
-
Mathematicaでの複素数の絶対値...
-
Excelが関数になってしまう
-
excel 英数字の数字が一桁の時...
-
DirectX9で文字を一文字ずつ表示
-
パソコンのA4に大きく一文字入...
-
縁取った文字とフェードアウト...
-
他国語
-
VBでバイナリエディタを作成に...
-
word
-
名古屋の栄と錦は治安悪い?
-
数式中の文字をCambria Math以...
-
PDF→CSVへ変換
-
illustratorとExcelは連携出来...
おすすめ情報