dポイントプレゼントキャンペーン実施中!

8~16bit、32bitのマイコンでCの組み込みプログラムを仕事で作りはじめました。
その中で、floatやdoubleといった実数型は使わないようにと教わりました。コードサイズが大きくなること、処理時間が大きくなることが理由だと考えていますが、定量的に考察したことがありません。
そこで、コンパイラのhelpを検索してみたところANSI-Cで決められているほど広くないにしても使えることが書いてありました。しかしながら、先輩たちはその使用をかたくなに拒みます。しかし、理由も先ほどのような感じです。
もし仮に、コードサイズや処理時間に問題ないとしても実数型を使わない理由を教えていただけませんでしょうか?

A 回答 (12件中11~12件)

どのような組み込み機器なのかは不明ですが……



CPUと開発環境が用意しているのであれば実数型を使うことは可能でしょう。
場合によってはエミュレートになるかも知れませんが。
その場合の処理ステップの増加にヨルコードサイズの増加、およびそれらを処理するクロック分の処理時間が増える。
といっているのではないでしょうか?
また、実数型での演算では誤差が発生する可能性がありますから、その誤差に関しての処理の追加も必要になるかも知れません。

組み込みだと潤沢なメモリやCPUパワーが用意されるわけではないでしょうから、『使わない』という社内ルールにした方がよい。
ということなのかも知れません。

# 先日、スタックの使用量について問い合わせを受けたことが。
# グローバル領域に追い出したりすることで使用量は抑えられることを確認していますが…
# 実施の指示がありませんでしたのでそのままです。
# 実施した場合はシステム試験やり直しになるので。
    • good
    • 0
この回答へのお礼

ありがとうございます。

>『使わない』という社内ルールにした方がよい。ということなのかも知れません。

おそらく、誰もやったことがないので避けているのだと思います。

処理時間、コードサイズ、精度(誤差)の問題がクリアできれば「使える!」といって差し支えないか心配をしているところです。
AD値を物理量と関連付けた計算をするときに、32~16bit整数の範囲で何回も係数を掛けたり足したり、あげく桁合わせをしたりとするなら、実数で計算することも検討した方が良いのではないか?と考えています。

お礼日時:2009/03/10 01:06

>>もし仮に、コードサイズや処理時間に問題ないとしても実数型を使わない理由を教えていただけませんでしょうか?



問題あるから使わないんじゃないでしょうか?問題ないなら実数型を使うと思いますよ。

この回答への補足

その「問題」を実例を踏まえて教えていただけると助かります。
精度(桁)が問題になったとか、厳密な値の比較ができないとか・・・。

補足日時:2009/03/10 00:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!