ページ 11

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

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

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

Posted: 2012年10月05日(金) 23:20
by jay
たしかC言語で”%”演算子は実数の計算には使えなかったと思います
恐らくそれが原因で思った通りの動作をしていないのでないでしょうか?

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

Posted: 2012年10月06日(土) 01:02
by softya(ソフト屋)
そもそもGameCountが25.5の倍数の値を確実に指すのでしょうか?
もし指さないのなら、例え式がうまくできても条件を満たす事は無いと思いますが。
※ 比較する時に10倍してintにした後255で余りが0かif文の条件にすれば出来ますが、float→intの変換誤差やらそのGameCountの精度がそこまで高いのか?など問題が色々あります。

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

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