• ベストアンサー

分を表す数値(int型)を、小数点に直したい

例えば、 左↓の分を表すint型数値の値を、 右↓のような小数点の形式に直す方法を教えて下さい。 どちらもint型で。 もし、int型で小数点が扱えないなら、最適な型で直したいのですが・・。 ※小数点以下の桁数は一桁です。 ----------------------------- 120 (分) → 2  (時間) 125 (分) → 2.1 (時間) 130 (分) → 2.2 (時間) 135 (分) → 2.3 (時間) 140 (分) → 2.3 (時間) 145 (分) → 2.4 (時間) 150 (分) → 2.5 (時間) 155 (分) → 2.6 (時間) 160 (分) → 2.7 (時間) 165 (分) → 2.7 (時間) 170 (分) → 2.8 (時間) 175 (分) → 2.9 (時間) 180 (分) → 3 (時間) -----------------------------

  • Java
  • 回答数8
  • ありがとう数6

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

  • ベストアンサー
  • you111111
  • ベストアンサー率45% (20/44)
回答No.6

double型変数 = Math.round(int型変数 / 6.0) / 10.0; とすればとりあえずはできます。 6.0で割ってからさらに10.0で割っているのは、まるめの対応です。

その他の回答 (7)

  • hilo256
  • ベストアンサー率18% (3/16)
回答No.8

No.7の方につけたしですが、 DecimalFormat("0.0"); とすると、 120 (分) → 2.0(時間) となってしまうので、 DecimalFormat("0.#"); としたほうがいいでしょう。

回答No.7

数値をフォーマット出力するDecimalFormatクラスはいかがでしょう。 以下のプログラムを実行してみてください。 import java.text.DecimalFormat; (中 略) int i = 0; double d = 0.0; String s = null; DecimalFormat df = null; df = new DecimalFormat("0.0"); for ( i=120; i <=180 ; i++) {   d = (double)i / 60.0;   s = df.format(d);   System.out.println(     "[" + i + "]=>[" + s + "]"); } DecimalFormatについては、参考URLを参照してください。

参考URL:
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/text/DecimalFormat.html
回答No.5

#3の補足です。 javaは割り切れるはずでも仕様上、丸め誤差がでてきてしまい、結果が2.999999・・・などのようになることがありうるので、小数点以下1桁で丸めています。 メソッドを使うのに、java.util.*などのimportを忘れないでください。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.4

こんばんは int型は整数型ですので、小数は表現できません。 また、上記の変換式はすごい変なんですけど、 ----------------------------- 120 (分) → 2  (時間) 126 (分) → 2.1 (時間) 132 (分) → 2.2 (時間) 138 (分) → 2.3 (時間) 144 (分) → 2.4 (時間) 150 (分) → 2.5 (時間) 156 (分) → 2.6 (時間) 162 (分) → 2.7 (時間) 168 (分) → 2.8 (時間) 174 (分) → 2.9 (時間) 180 (分) → 3  (時間) ----------------------------- であれば、分と時間が1対1になりましたよね。 double hour = (double)minute/60.0 ;

kawaen
質問者

補足

すみません、そういう風に変換したかったのです・・ 間違えてました。

回答No.3

javaのカテゴリーなのでjavaで書きますが・・・ intは「整数」だと宣言しているので、小数は扱えません。 答えをdoubleなどで指定して、以下のように丸めるのがいいのではないでしょうか。 int minutes = 125; // 元の「分」です。 double hours = 0.0; // 答えの「x.x時間」です。 // ***** 小数点を丸めてフォーマット変換 ***** // DecimalFormat df = new DecimalFormat(); df.setMaximumFractionDigits(1); df.setMinimumFractionDigits(1); hours=df.format(minutes/60)

kawaen
質問者

補足

教えていただいた方法でやってみると、 結果が以下のようになったのですが↓ ----------------------- 120 (分) → 2.0  (時間) 125 (分) → 2.0  (時間) 130 (分) → 2.0  (時間) 135 (分) → 2.0  (時間) 140 (分) → 2.0  (時間) 145 (分) → 2.0  (時間) 150 (分) → 2.0  (時間) 155 (分) → 2.0  (時間) 160 (分) → 2.0  (時間) 165 (分) → 2.0  (時間) 170 (分) → 2.0  (時間) 175 (分) → 2.0  (時間) 180 (分) → 3.0  (時間) ----------------------- こうではなく、できれば質問で書いたように、四捨五入したいのですが そんなのって無理なのでしょうか・・?

noname#9262
noname#9262
回答No.2

普通に分を60で割るのはだめですか? 120 / 60.0とすれば答えがReal型?float型?(あいまい。。でも、小数点を扱えるやつです。。)で出て来るのでこれといった変換は必要ないと思いますよ。 60.0にするところがポイントです。ここで60としてしまうと答えはint型になってしまい、小数点は扱えません。

  • yomo3
  • ベストアンサー率32% (88/269)
回答No.1

何を使って計算しているのかよくわからないので、使える関数もよくわかりませんが、 エクセルならば =ROUND([分]/60,1) となります。 round関数は四捨五入の関数です。1つ目の引数が丸める値、2つ目の引数は丸めた後の小数点以下の桁数です。 round関数が使えない環境では、整数化関数intを使って、 =int([分]/6+0.5)/10 とすればいいでしょう。

関連するQ&A

  • 小数点を含む数値の切捨て

    数値の小数点以下を切捨てて変数に格納したいのですが いい方法はないものでしょうか? "123.456"なら"123"が取得できればOKです。 ちなみに要は小数点より前の数値が取れればということなので $Int = split(/./,"123.456",1) とsplit関数を試してみたんですが、変数$Intには なにも値が取得できてませんでした。 ("."を":"に変えたら取得できました。) 参考書等で色々調べてはみたんですが どうしてもわかりません。 お手数ですが、宜しくお願い致します。

    • ベストアンサー
    • Perl
  • Excelで数値の小数点を揃える方法は?

    Excelの数値データで、小数点以下1桁とか2桁とかの表示にした時、整数の小数点以下を表示しない方法はありますか?しかも、小数点を中心に桁を揃えて。   12.2  300   20.4 こんな感じです。

  • 数値を小数点二桁にしたい

    セルに小数点十桁くらい入っているのですが、 表示を小数点二桁にしています。 表示ではなくて、実際の値を小数点二桁に 置き換えたいのですが、簡単に置き換える方法は ありますか?

  • 小数点の数値をそのままセルに表示させたい

    タイトルのままですが、セルに打った小数の値をそのまま表示させたい時はどんな設定が必要になりますか。 具体的には、"1.0"と打っても、"0.75"と打っても、このまま表示され、'1'や'2'と打ったら、"1.0"、"2.0"と表示されるようにしたいのですが・・・ セルの書式設定の表示形式で単純に小数点以下の桁数を設定するだけでは、この問題は解決できません。なぜなら、小数点以下1桁とした場合、"0.75"は四捨五入されて、"0.8"となってしまうからです。 どなたかやり方をご存知の方はご教授の程、宜しくお願い致します。

  • EXCEL 小数点以下の桁数を条件によって変えるには

    G列の書式設定を数値、小数点以下0桁に設定してあります D列にある特定の文字が入力された時だけ、小数点以下の桁数を1桁にしたいのですが、どのようにすればよいでしょうか? それと小数点以下0桁、1桁の数字の桁位置をそろえることはできますか

  • 小数点第一位まで表示したいのですが

    「1」は、「1」で、「1.1」なら、小数点第一位まで表示したいのですが 列全体に書式設定を設定したい場合、 どう設定すればいいのでしょうか? 数値で小数点以下の桁数を1にすると、「1」が「1.0」になってしまいます。 理想の表示形式は添付画像の通りです。

  • 小数点以下の値を判断したいです

    DBから取得する値が3ならば3と、3.5なら3.5と取得したいです。 この時にint型で取得すると小数点以下が切られてしまいます。 double型で取得すると3.5は3.0となってしまいます。 どうしたらよいのでしょうか? 整数値であればintで小数値を含むならばdoubleで取得するようなロジックにしようかと思っているのですが、小数点以下の値を判別させる方法はありますでしょうか?

  • 小数点付の数字の桁数を揃える

    >10 を $suu=sprintf("%03d",$suu); このようにして3桁に揃えると >010 ですが、小数ありの数字を上の方法で桁数を揃えると >10.5 だった場合、小数点以下が無視され、 >010 と表示されます。それを、 >010.5 のように小数つきで桁数を揃えたいのですが、 どうすればいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • 小数点の表示について

    Long型の変数の値を、 テキストボックスに表示しているのですが、 「10」の値を表示する時に 「10.000」と小数点以下3桁まで表示したいと考えております。 複数の値を並べて表示するので 桁数を合わせて見やすくしたいのですが なにか簡単な方法で実現できないでしょうか? 宜しくお願いします。 現在はFormat関数を利用しています Format(変数名, "##.###") 当然ですが「10.000」とは表示されません。

  • 小数点以下桁数が最大の値に小数点以下桁数を揃えるにはどうしてますか

    小数点以下桁数が最大の値に小数点以下桁数を揃えるにはどうしてますか 例えばSELECT文で取ってきた値が、 0.05と0.1だった場合は、0.1を0.10としたいです。 0.5と2だった場合は、2を2.0としたいです。 1と2だった場合は、1も2も、そのままとしたいです。

    • ベストアンサー
    • MySQL

専門家に質問してみよう