• ベストアンサー

【FLASH】小数点以下の「0」も表示したい。(1 → 1.0 など)

FLASH8(Win-XP)使用者です。 残り時間の秒数などを小数点以下第1位まで表示させたい場合、通常のやり方、 hyoji.text = Math.floor(jikan*10)/10; などですと、小数点以下が0の場合は0が表示されません。どうすれば1.0などと表示されるのでしょうか。 お詳しい方、よろしくお願いいたします。

  • Flash
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.2

ご質問を見て, 私も一瞬 「if で分岐?」 もしくは 「型宣言?」 など考えてしまいました。 でも,良いアイデアをパッとは閃かない。 こういう問題でパッ閃かない場合は, 「困った時のJS(JavaScript)頼み」です。 小数点以下の編集 http://www.aichi-iic.or.jp/co/otaya-jouzou/scc/ya0362.html 上記ページの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+%22%E5%B0%91%E6%95%B0%E7%82%B9%E4%BB%A5%E4%B8%8B%22+%E6%A1%81&lr=
ikataro
質問者

お礼

おお!これはシンプルでいいですね。 お恥ずかしながらJavaScriptは全くわかりませんがActionScriptに似ていると聞いて安心しました。 使わせていただきます。 ありがとうございました。

その他の回答 (1)

  • DPE
  • ベストアンサー率85% (666/776)
回答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/00002704.html ******************************* 数値を扱うものでちょっと変わった処理は、数値を1桁ずつ取り出そうとすると難しいけれど文字列なら簡単にできるという発想がポイントです。 文字列に変換すると算術演算ではできない細かい芸当も可能で、3桁おきにカンマを打つ表現や1桁ずつ動くアクセスカウンターの作成など、いろいろな作品に応用できます。 ただし、文字列に変換した後は算術演算はできなくなります。 処理した後で算術演算を行う場合は、Number 関数で数値に再度変換してください。 また、文字列の処理はどうしても処理が重いので、リアルタイムで複雑な計算を行う場合は不向きです。 (まあ、ごく普通に使う分にはあまり細かく考えなくても大丈夫です) 浮動小数点には誤差が付き物です。 小数点以下第2位以降を切り捨てて計算した結果、誤差が拡大することもありえます。 高い精度を要求する計算にご利用の際はご注意ください。

ikataro
質問者

お礼

そうですか。直接的な方法はActionScriptにはなかったのですね・・  今後はこの裏わざを使わせていただきます。 どうもありがとうございました!

関連するQ&A

  • テキストフィールドの小数点表示について

    テキストフィールドに表示される数値の小数点以下をさせない方法はありますか? Math.floorなどを使うと問題があるのでテキストフィールドの表示だけを整数にしたいのです。 環境はFlashMXを使っています。

    • ベストアンサー
    • Flash
  • スプレッドシートの小数点以下の表示方法について

    スプレッドシートの小数点以下の表示方法について質問です。 スプレッドシートにて「1.23000(約123円)」の文字を小数点以下2桁だけ残し、残りのゼロ3つを消したいです。こんな感じ「1.23(約123円)」。 「1.20000(約120円)」の時も小数点以下2桁は残して「1.20(約120円)」のような表示にしたいです。 何か良い方法がありましたら教えて欲しいです。 私が試したのは、「テキストを列に分裂(スペース)」を使用すると、自動的に小数点以下のゼロが消えるのですが、1.20000の場合「1.2」の表示で小数点以下2桁を表示させることができず、、小数点以下の桁数を増やすを使用してゼロを付けました。 しかし、最終的には「1.20(約120円)」にように表示させたいため、分裂した列を合体(=A2&B2)すると、結局増やしたゼロが消えて「1.2(約120円)」と表示されてしまいます。 何か良い方法を教えて頂けますと幸いです。

  • .NET 小数点以下の切り捨てについて

    小数点以下を切り捨てにしたいのですが 割り切れる場合だけ数値が思うようになりません 3850/1.1は3500になるはずですが以下のコードではre=3499になります double a = 3850; double b = 1.1; String^ re = Math::Floor(a/b).ToString(); 結果を3500にするにはどのような切り捨て処理をすれば良いのでしょうか?

  • javascriptで小数点以下2捨3入の記述方法は?

     javascriptで小数点以下四捨五入(Math.round)切り上(Math.ceil) 切下げ(Math.floor)はありますが、事情があって2捨3入、3捨4入が 必要となりました。どこで調べても見つかりません。どなたか記述方法 を教えてください。 また小数点以下第1位、第2位を特定できる方法もありましたら あわせて教えていただければ幸いです。

  • 【エクセル】小数点以下を表示したい

    特定の譲許んかにある数字を小数点を表示するにはどうすればいいのでしょうか。 【要件】 ・10以上は小数点表示しない ・10以下を小数点表示する  ・0は0のまま  ・0.3の場合、0.3と表示  ・5の場合、小数点表示せず、5と表示する 宜しくお願いします。

  • 小数点以下を強引に表示させたい

    小数点以下を強引に表示させたいと考えています。 具体的には、「130」という値を「130.00」というように、小数点以下2桁まで表示させたいのです。3桁以下は切り捨てます。 これまでは、 $c = $a / $b; round($c, 2); という方法でやっていたのですが、$cがきっちり割り切れる値だと、どうも普通に小数点以下を表示させないようなのです。 例え「00」でも表示させたいのですが、そのような関数はありますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 小数点以下がある時だけ表示する方法(点なし)

    Office365使用しています。 Excel書式設定で 小数点以下が存在しない場合は小数点を表示せず 小数点以下がある場合のみ、小数点以下の数字と小数点を表示をしたく 下記、2つの書式設定の組み合わせで実現しております 書式設定1 【数式】=IF(RIGHT(TEXT(A1,"0.#"),1)=".",TRUE,FALSE) 【表示形式】数値(-1234) 書式設定2 【数式】=IF(RIGHT(TEXT(A1,"0.#"),1)=".",FALSE,TRUE) 【表示形式】#,##0.#;[赤]-#,##0.# 小数点第二位を表示させるには、どこをどのように修正すれば良いのでしょうか。 お詳しい方、ご教授お願い致します。 -------------------- こういったことを質問すると、私の文章が悪いのか 「そんなことも分からないのか」といった嫌味なコメントが届きます。 分からないのでお尋ねしているので、そこはどうかご容赦ください。

  • VB初心者。小数点以下の表示でつまづいています(涙

    上記内容で四苦八苦しているVB初心者です。 Microsoft Visual Studio / ActiveReportで帳票を作成しています。 DBからの値が、小数点以下ありの場合(例:1.7)の時はそのまま表示し、小数点以下が0の場合(例:1.0)の時、整数部分のみを表示させたいのです。 質問の『値』ですが、今回の値は小数点第一位までです。 #.0 の時 → # と表示。 #.1~9 の時 → そのまま表示。 としたいのです。 稼働環境はWinXP、Win7です。 ちなみにイメージしていただくために・・・ 既に別の条件で、 『If H_数量.Text = "0.00" Then H_数量.Text = "" H_単価.Text = "" End If 』 というコードを書いているのですが、この、『H_数量』が問題の値部分です。 H_数量 の値が小数点以下ありの時、0の時、 での条件式となります。 よろしくお願いします。

  • 小数点以下0の非表示

    教えてください。 PostgreSQLでNUMERIC(8,3)のデータがあるのですが、 そのデータが小数点以下が0だった場合などに 0を表示させたくないのですがどのようにすればよいのでしょうか? 2500.000 → 2500 108.050 → 108.05 のようにしたいのです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 小数点以下の表示

    エクセルの問題集で、「データを小数点以下2桁の表示にしなさい」とあるのですが、答えは「113.0とか85.3」とかになっています。 これって小数点以下1桁ですよね。 問題が間違ってるのでしょうか?

専門家に質問してみよう