• ベストアンサー

浮動小数点の小数点3桁を。。。

宜しくお願いします。C言語を使い三角関数の計算を行っております。小数点3位以下は四捨五入にしたいのですが、そのような関数が有りますでしょうか? 環境はQuickC(MSDOS)です。 もしなければ文字列にでも変換し直して行うのでしょうか?一般的な方法など御在ましたらお教え下さい。 宜しくお願いします。

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

  • ベストアンサー
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.4

負の数の対応は必要ですか? 負の場合の四捨五入の定義は「絶対値の四捨五入に符号を付加」でいいですか? 「絶対値の四捨五入に符号を付加」でオッケーなら、#1,#2,#3の回答に符号処理の処理を加えてください。

toko703
質問者

お礼

有難う御座いました。ちゃんと動作しました。 返信が遅くなり申し訳ありません。

その他の回答 (4)

回答No.5

こんにちは。  基本ロジックは、他の方の通りです。ただし、どれくらいの数を扱っていらっしゃるのかわかりませんが、「有効桁数」に注意。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になります。

toko703
質問者

お礼

有難う御座いました。ちゃんと動作しました。 返信が遅くなり申し訳ありません。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.3

普通は1000倍して0.5を足して関数INTで整数にして(切り捨てて)から 1000で割ります。

toko703
質問者

お礼

有難う御座いました。ちゃんと動作しました。 返信が遅くなり申し訳ありません。

  • nagare
  • ベストアンサー率33% (280/831)
回答No.2

関数はないです 文字にしなくても 10000を掛けて 5を足して 10で割って 1000で割る ↓ 0.456788 4567 4572 457 0.457 (ロジックに正解はありませんので、参考まで)

toko703
質問者

お礼

有難う御座いました。ちゃんと動作しました。 返信が遅くなり申し訳ありません。

  • Haizy
  • ベストアンサー率40% (404/988)
回答No.1

こんにちは。 QCなんて、7~8年前を思い出し、ちょっと懐かしい気分です。 でわ、実習っぽいのでヒントだけ。 四捨五入に int を使います。 int型で、宣言した変数を1つ準備します。 小数点3桁ですが、1000倍すれば、整数になります。 これを、ある数を足してあげつつintに代入すると、繰り上がりが発生して四捨五入(もどき)が出来上がります。 この処理で出来上がった整数を/100して、float(double)型に戻してあげてください。 がんばってくださいネ! でわ

toko703
質問者

お礼

有難う御座いました。ちゃんと動作しました。 返信が遅くなり申し訳ありません。

関連するQ&A