- ベストアンサー
浮動小数点の小数点3桁を。。。
宜しくお願いします。C言語を使い三角関数の計算を行っております。小数点3位以下は四捨五入にしたいのですが、そのような関数が有りますでしょうか? 環境はQuickC(MSDOS)です。 もしなければ文字列にでも変換し直して行うのでしょうか?一般的な方法など御在ましたらお教え下さい。 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
負の数の対応は必要ですか? 負の場合の四捨五入の定義は「絶対値の四捨五入に符号を付加」でいいですか? 「絶対値の四捨五入に符号を付加」でオッケーなら、#1,#2,#3の回答に符号処理の処理を加えてください。
その他の回答 (4)
- はなおか じった(@Jitta)
- ベストアンサー率42% (69/161)
こんにちは。 基本ロジックは、他の方の通りです。ただし、どれくらいの数を扱っていらっしゃるのかわかりませんが、「有効桁数」に注意。MS-DOSであれば、int型は16ビットだったと思います。扱える数字の最高は(2^16)-1=65,535です(unsigned intの時)。つまり、整数部が66だと、1000倍するとオーバーフローしてしまいます。32ビットだと上限が約42億です。この辺、コンパイラの仕様を十分にチェックしてください。 また、「符号」も重要です。doubleやfloatからintへのキャストは、ただ単に小数部を切り捨てる、だったと思います。これに対し、四捨五入で4以下の時は「元の数を超えない最大の整数」です。実例を挙げると、1.4は1になりますが、-1.4は、キャストでは-1に、四捨五入では-2になります。
お礼
有難う御座いました。ちゃんと動作しました。 返信が遅くなり申し訳ありません。
- ymmasayan
- ベストアンサー率30% (2593/8599)
普通は1000倍して0.5を足して関数INTで整数にして(切り捨てて)から 1000で割ります。
お礼
有難う御座いました。ちゃんと動作しました。 返信が遅くなり申し訳ありません。
- nagare
- ベストアンサー率33% (280/831)
関数はないです 文字にしなくても 10000を掛けて 5を足して 10で割って 1000で割る ↓ 0.456788 4567 4572 457 0.457 (ロジックに正解はありませんので、参考まで)
お礼
有難う御座いました。ちゃんと動作しました。 返信が遅くなり申し訳ありません。
- Haizy
- ベストアンサー率40% (404/988)
こんにちは。 QCなんて、7~8年前を思い出し、ちょっと懐かしい気分です。 でわ、実習っぽいのでヒントだけ。 四捨五入に int を使います。 int型で、宣言した変数を1つ準備します。 小数点3桁ですが、1000倍すれば、整数になります。 これを、ある数を足してあげつつintに代入すると、繰り上がりが発生して四捨五入(もどき)が出来上がります。 この処理で出来上がった整数を/100して、float(double)型に戻してあげてください。 がんばってくださいネ! でわ
お礼
有難う御座いました。ちゃんと動作しました。 返信が遅くなり申し訳ありません。
お礼
有難う御座いました。ちゃんと動作しました。 返信が遅くなり申し訳ありません。