久しぶりの投稿をさせていただきます。matsuです。 亀井さんは,単にC言語の表記をご質問されているのかも・・・。 double pi=3.14; double r; r=2*2*pi; printf("%lf",r); マイコンですと,printfはLCDに表示できるよう自作するか, だれかが作ったのを利用するかになりますけど・・・。 (2次元倒立振り子を作ったとき,double型で間に合ってました。) kazuaki kamei wrote at Fri, 27 Jan 2006 10:44:22 +0900 as follows. > 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の演 >> 算であれば、ややこしいですが固定少数演算を推奨します。 >