作品タイトル:GR-KURUMIの機能を使う 浮動小数点編
表示名:@chobichan
コンセプト・作品説明 |
---|
GR-KURUMIで浮動小数点を使います |
浮動小数点を使ってみる
例によってWEBコンパイラにログインし、新しいプロジェクトを生成しても構いませんし、前回のビルドしただけのプロジェクトを開き直すのでも構いません。ちょっと実験してみましょう。比較の為にArduino pro miniも用意しています。以下の様なコードを書いてみました。
void setup() { String s = "float test"; float f = 9.999f; s += f; Serial.begin(9600); Serial.println(s); }
このコードはArduino IDEでは動いて、WEBコンパイラではコンパイルができませんでした。
図はArduino pro miniで実行した結果です。
小数点以下3位で四捨五入されてしまっています。
Arduino IDEではsprintfの書式で%fは処理できませんでした。簡易版のprintfの実装を行った時によくこのケースが有ります。
WEBコンパイラでは%fを処理できます。
右のTera Termのキャプチャに結果を表示しています。Arduino IDEで浮動小数点の有効桁を自分で制御する時はdtostrfを使います。
http://technical.ddo.jp/index.php?dtostrf()
通常は有効桁が小数点以下2位くらいまであれば、演算の結果を表示する分にはだいたい問題は無さそうですね。
しかし人によっては勝手に有効桁を小さく丸められるのは迷惑に思えるかもしれません。
※とは言え無限の精度なんて実用性が無いのですが。
次に以下の様なコードを書いてみました。
extern "C" { #include} void setup() { String s = "float test"; float f = 9.999f; char buf[32]; sprintf(buf,"%f",f); s += buf; Serial.begin(9600); Serial.println(s); }
@chobichan
極一般のハードウエアエンジニア。たまに雑誌記事を書いています。
twitterアカウント:https://twitter.com/chobichan