私のマイクロコントローラは浮動小数点型の値を処理しないので、int を使用して浮動型の値を操作するにはどうすればよいですか?
レジスタ a=5 に格納されている値があるように、0.65 を掛けて、結果を別のレジスタ c に格納しますか? どうすればいいのですか?int を使用すると、小数値を脇に置いて解決し、float を使用すると「?」が表示されます。
私のマイクロコントローラは浮動小数点型の値を処理しないので、int を使用して浮動型の値を操作するにはどうすればよいですか?
レジスタ a=5 に格納されている値があるように、0.65 を掛けて、結果を別のレジスタ c に格納しますか? どうすればいいのですか?int を使用すると、小数値を脇に置いて解決し、float を使用すると「?」が表示されます。
複数の問題が混在しています:
最初に: ターゲット コントローラに浮動小数点ユニット (FPU) が含まれていなくても、計算は SW ライブラリで実行できます。通常、このライブラリの使用は自動的に行われます。float で計算を行うことができます。これらのライブラリは、コードサイズと実行速度が比較的大きいです。単純な float 演算を追加しただけでも、コード サイズが大幅に増加することに気付くでしょう。
2 番目の問題は、printf ルーチンによる出力です。通常、フローティングポートのサポートは必要ないため、コードサイズを節約するためにストライプ化されています。ライブラリ libprintf_flt.a libm.a を追加し、リンカー オプション -Wl,-u,vfprintf を使用することで、明示的にアクティブ化できます。
または、 ftoa 関数を使用できます。