- ベストアンサー
日数 時分秒の求め方
プログラムで、関数をつかわずに、 3589.28時間を、 日 月:時:秒 で表記したいのですが、どのように計算すればいいでしょうか? 四則演算は使えるとします。 変数の利用もOKです。 関数を使わないと考えると。。。できないです。。。 よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
切り捨ても出来ないと厳しいですが、ifで判断すれば可能ですね。 とりあえず、日数を求めるのは、C風に書くと、 x = 時間; y = x / 24; for(i=0; ;i++){ if(i+1>y) { z = i; break; } } z に日数が求まります。 残り時間 = x - z*24; として後は同様に。 ifも使えないとすると無理。
その他の回答 (3)
- hashioogi
- ベストアンサー率25% (102/404)
int変換もmod計算もできないそうですが、逆に何ができるのでしょうか? それによってやり方が見つかると思いますけど。
お礼
返答ありがとうございます。 もう一度、最初から関数を探していたら、小数点以下切り捨ての関数のみあったので、無事に作成できました。 ありがとうございます。 (まあ、これ以外がまともにないというのも、使えないソフトだと思いますが。。。)
- TooManyBugs
- ベストアンサー率27% (1472/5321)
>3589.28時間 に固定されているのだから答も直値で書くだけですね。 いくつになるかは「さんすう」の問題だから紙にでも書いて計算すればよい。
お礼
返答ありがとうございます。 秒単位で変動するものの合計値なので、紙で計算では、無理です。
- jjon-com
- ベストアンサー率61% (1599/2592)
日 月:時:秒 ではなく 日 時:分:秒 だと解釈して回答。 int seconds = (int)(3589.28 * 3600); int minutes = seconds / 60; seconds = seconds - minutes * 60; int hours = minutes / 60; minutes = minutes - hours * 60; int days = hours / 24; hours = hours - days * 24; System.out.println(days + " " + hours + ":" + minutes + ":" + seconds);
お礼
回答ありがとうございます。 ご指摘どおり、日 時:分:秒 ですね。 残念ながら、int変換も出来ないという状態なので、 苦しんでいます。 実は、あるソフトのプログラムできるところなのですが、int型にも変換できないし、modなんかもないのです。愕然としている次第です。 もし、上記の条件(要は、整数型に変換できない。できても、小数点以下が勝手に四捨五入されています。変数はVBで言う、Variant型みたいです。)で、可能でしょうか? 頭が悪くてすみません。 よろしくお願い致します。
お礼
返答ありがとうございます。 最終的にこれかなと思って、再度、関数を見なおしたら、小数点以下切り捨ての関数のみ使えそうなのがありましたので、上記でなく、実現できました。 上記は、計算量が半端無く発生しそうなので、リソースの心配がありまして、最終手段となっておりました。 ですが、なんとかやり方はあると思えたので、安心できました。 大変にありがとうございました。