ページ 11

浮動小数点について

Posted: 2013年9月12日(木) 20:29
by ライアー
普通にプログラムを作っていたのですが
余りを使ったループを使おうとしたのですが

どうしてもエラーが出て

浮動小数点の不正な使用というものです

式はCount%3というものです

Countは1秒間に60に分割し、
簡単に言うとCount=60とは1秒のことを指します。

どうしても%を使いたいのですがどうすれば解消されますか?

Re: 浮動小数点について

Posted: 2013年9月12日(木) 20:31
by みけCAT
余りを計算する関数を実装する、という方針ではいけませんか?
Count%3という式で、何を求めたいですか?
Countの型はなんですか?
使用している言語はなんですか?
C++なら、独自の型(クラス)を定義して、%演算子をオーバーロードするというテクニックが使えます。

Re: 浮動小数点について

Posted: 2013年9月12日(木) 20:36
by みけCAT
例えば、%演算子が整数にしか使えないと仮定すると、

コード:

//Countが与えられる
var EPS=0.0000001
var Count2=Gauss(Count*60+EPS) // Gauss関数は引数の値を超えない最大の整数を求める、*演算子は2項の積を求める
var Count_percent_3=(Count2%(3*60))/60 // %演算子で整数同士の余りが求まる、/演算子は割り算を行う
みたいな感じでしょうか?

Re: 浮動小数点について

Posted: 2013年9月12日(木) 20:37
by ライアー
Countの型はdouble型です。
余りを出す関数を実装するというのは?
Count%3で1秒間に20を求めたい
使用してる言語はC言語です

Re: 浮動小数点について

Posted: 2013年9月12日(木) 20:39
by みけCAT
「Count%3で1秒間に20を求めたい」とはどういうことですか?
Count%3の値が20の時、1秒を表すようにする、ということですか?

Re: 浮動小数点について

Posted: 2013年9月12日(木) 20:43
by ライアー
1秒間に20回行動するということです。
1秒間={Count=60}だからCount=1は1/60秒であるから
0→1→2→0→1……のループをして
Count%3==0を使って秒間20を出したいというわけです

Re: 浮動小数点について

Posted: 2013年9月12日(木) 20:46
by softya(ソフト屋)
整数しか扱わないからdoubleである必要性はありません。
そもそも%は整数用の演算子です。

Re: 浮動小数点について

Posted: 2013年9月12日(木) 20:51
by ライアー
ありがとうございます。int型に直してみたら起動しました。