解決済み

浮動小数点をXの倍数(整数)に丸める方法

  • 困ってます
  • 質問No.9374075
  • 閲覧数174
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 78% (171/219)

浮動小数点数Fを、Fにより近いX(整数)の倍数(整数)に丸める方法を教えてください。
自分なりにコード化しましたが、イマイチ美しくないです^^;
もっとスッキリした方法があれば教えてください。
よろしくお願いします。
※Fは正の浮動小数点数に限定します。

long L, mod ;

L = (long)F ; //キャストして小数点以下を切り捨てて整数化
mod = L%X ; //Xで除算して余りを求める
if ( mod ==0 ) {
//既にXの倍数なので何もしない
;
} else if ( mod <= X/2 ) {
//余りがX/2より等しいか小さい時
L -= mod ; //余りを減算する
} else {
//mod > X/2の時
L += X-mod ; //Xに満たない分を加算
}
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1

ベストアンサー率 62% (397/637)

このやり方だと問題がありますね。
例えば、4.6に一番近い3の倍数は6ですが、Lが4になるために3が答えとして出てきます。

単純にFをXで割って四捨五入した値に、Xをかければいいんじゃないでしょうか。
お礼コメント
black2005

お礼率 78% (171/219)

早速のご回答ありがとうございました。

確かにXが奇数の場合、まずいですね(汗)
仰る方法が良さそうです。
実際にプログラムを組んで検証してみます。
アドバイス感謝致します。
投稿日時 - 2017-09-13 11:39:39
OKWAVE 20th Be MORE ありがとうをカタチに
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ