• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:四捨五入について質問です。)

四捨五入の方法についての質問

このQ&Aのポイント
  • GUIアプリのエディットコントロール画面から、任意の数値を入力させ、小数点以下n桁で四捨五入をさせたいと考えています。
  • 現在、atofやatoiを使って四捨五入を試していますがうまくいきません。
  • 皆さんのお知恵をお貸しください、文字列処理以外で四捨五入する方法があれば教えてください。

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

  • ベストアンサー
  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.4

浮動小数点の誤差に起因する問題です。次を参照してください。たいへん奥が深いですよ。 http://www.geocities.co.jp/SiliconValley-Bay/5308/

vipasigaru
質問者

お礼

すばらしいHPのご紹介、ありがとうございます。 浮動小数点の誤差に起因する問題についてはソ開くらいまでなら認識していましたが、 具体的に集中的に集められたHPで、よりいっそう知識が深まった気がします。 結局、文字列取り込みのところは、小数点以下n+1桁以下を削除する取り込みを行い、 あとはNo2の方もおっしゃっていたように、整数値にあげてから切り捨ててうまくいきました。

その他の回答 (3)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

>どこかにテクが入っているのでしょうか? (3)+0.5する の箇所です。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

よくあるやりかたは 1)atofで文字列→浮動小数点(double) 2)10.0^n 掛ける 3)+0.5する 4)floorで整数化 5)10.0^nで割る とです。

vipasigaru
質問者

補足

申し訳ございません、 ・atoiを用い、数値を取り込み、10^nをかけて整数値にしてから四捨五入 -> 0.05と0.0499...の違いがつけられない とどのように違うのでしょうか・・・。 どこかにテクが入っているのでしょうか? よくわかりません・・・・

  • Willyt
  • ベストアンサー率25% (2858/11131)
回答No.1

四捨五入は施したい桁に5を加えてその桁以下を切り捨てればいいのですが、それではまずいのでしょうか?

vipasigaru
質問者

お礼

ありがとうございました。 結局、文字列取り込みのところは、小数点以下n+1桁以下を削除する取り込みを行い、 あとはNo2の方もおっしゃっていたように、整数値にあげてから切り捨ててうまくいきました。 ちなみに、0.205を小数点第三位で四捨五入する時、No1がおっしゃられた方法だと桁下がりになります。

vipasigaru
質問者

補足

ご回答ありがとうございます。 よく考えると、躓いているのって文字列の取り込みのところでした。 0.1235 と 0.1234999999999999999999999999999999999999999 を同じようにatofで取り込んでいたので、 取り込んだ後、どっちも同じ数と認識されていたようです。 うーん。

関連するQ&A

専門家に質問してみよう