浮動小数点を文字列にする(dtostrf)
一般的に浮動小数点(float,double)などの数値を文字列に変換する場合,sprintf
を使います.しかし,printf
系関数は規模が大きいためArduino等のマイコンには適さないことが多いです.実際,Arduinoのsprintf
は%f
を使うともれなく?
が帰ってきます.
char str[10];
sprintf(str, "%f", 10.8f);
// str == "?"
そのかわりにdtostrf
関数をavr-libcが提供しています.
char str[10];
sprintf(10.8f, -1, 2, str);
// str == "10.80"
引数は,dtostrf(<数値>, <右づめ桁>, <小数点以下の桁数>, <文字列>)
です.右づめ桁は変換した文字列がスペースで右づめになり,符号やピリオド,数字,スペースの合計桁数が指定した数になります.小数点以下桁数は,小数点以下表示する桁数です.右づめ桁が不要の場合は-1を指定すると左詰めになります.