paku@kobe さん ラーメンさん ありがとうございます レベルの低い質問で恐縮しています。 私は N88 BASIC とかやっていたので PI = 3.14 R = 2*2*PI print R こんな感じで Cも出来ないものかと質問しました。 本当にC言語はややこしいですね。 つまり、少数を含む計算は 0.01の位まで必要なら 100倍して 計算結果を 100で割る と言う事ですね。 そして得られる結果は、正数部のみ と言う事でしょうか。 やっぱり めんどくさいですね・・・ C言語は。 もっと努力しないと・・・・・ ありがとうございます。 が書かれているように、レンジが狭いようであれば固定少数でいい > かと思います。おそらくPIDのパラメータは十進数で扱うと思いますので2の > n乗をかけてすべて整数に変換してH8で演算します。最後に少数に変換します。 > たとえば、下4ビットを少数とすると乗数と被乗数に64を掛けます。 > 2.1×5.6であれば134×358=47972 > 掛け算をしたので少数点位置が4ビットシフトしたので4ビット右シフトします。 > 47972 > 749 > 実数に変換するには64で割ればよいので > 749÷64=11.7となります。(制御ループのなかでは必要ありません) > > 割り算の場合は最初に被除数に64を掛けておきます。 > 2.1÷5.6であれば134÷358ですが > 134×64÷358=24と演算します。 > 実数に変換するには64で割ればよいので > 24÷64=0.38となります。 > > 浮動少数演算は演算パッケージを導入して変数をfloat、doubleで宣言または型 > 変換すれば浮動小数で演算できます。ただ、かなり遅くなりますのでPIDの演 > 算であれば、ややこしいですが固定少数演算を推奨します。