整数カウントをdouble型で割ってから四捨五入して整数値に直したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Chalaza

整数カウントをdouble型で割ってから四捨五入して整数値に直したい

#1

投稿記事 by Chalaza » 13年前

音ゲーのようなものを作っているのですが、GameCountという大本のカウンターを作って、それに合わせるようにしてみたところ
BGMのテンポの1拍が25フレームと26フレームの間のようなので25.5くらいに設定したいのですが、
if((int)(GameCount%25.5) == 0)のようにしても実行できません。
GameCountを25.5で割ったあまりを四捨五入した数値が0のときにタイミングを合わせるにはどうすればよいでしょうか?

jay
記事: 314
登録日時: 15年前
住所: 大阪市
連絡を取る:

Re: 整数カウントをdouble型で割ってから四捨五入して整数値に直したい

#2

投稿記事 by jay » 13年前

たしかC言語で”%”演算子は実数の計算には使えなかったと思います
恐らくそれが原因で思った通りの動作をしていないのでないでしょうか?
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 整数カウントをdouble型で割ってから四捨五入して整数値に直したい

#3

投稿記事 by softya(ソフト屋) » 13年前

そもそもGameCountが25.5の倍数の値を確実に指すのでしょうか?
もし指さないのなら、例え式がうまくできても条件を満たす事は無いと思いますが。
※ 比較する時に10倍してintにした後255で余りが0かif文の条件にすれば出来ますが、float→intの変換誤差やらそのGameCountの精度がそこまで高いのか?など問題が色々あります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Chalaza

Re: 整数カウントをdouble型で割ってから四捨五入して整数値に直したい

#4

投稿記事 by Chalaza » 13年前

すみません。わざわざdoubleやfloat型にしなくても
『9回、25フレームで測ったら1回26フレームで測る』のように設計したらうまくいきました。
この割合を変えれば色んな曲で再現できそうです。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る