●Arduino 小数点以下を切り捨てて文字列にする

浮動小数点で計算すると何かと小数点以下の数字が沢山並んでしまうため、LCDなどに表示するには小数点以下を丸める操作が必要になると思います。

▼Stringを使う方法

この場合は浮動小数点型(double型とfloat型)の動作です。
実数型では全く違う動作(進数)になります。

String str = String(浮動小数点値,小数点以下の桁数)

浮動小数点値0.1234の下3桁を残し後を切り捨てます。
5以下だと切り捨て6以上だと切り上げになります。

String str = String((double)0.1236,3)
出力結果:0.124

String str = String((double)0.1235,3)
出力結果:0.123


▼dtostrfを使う方法

Arduinoではsprintfで浮動小数点を扱えないみたいでdtostrf関数が用意されているそうです。

dtostrf(浮動小数点値,文字列の長さ,小数点以下の桁数,文字列バッファ)

”文字列の長さ”では、指定された長さの中に右詰めで値を表示して左側はスペースで埋められます。
0を指定すると左側から値が表示されます。
”小数点以下の桁数”では、四捨五入して切り捨てる桁数を表します。

char buf[16];
dtostrf((double)1234.5,9,3,buf);

出力結果:" 1234.500"

char buf[16];
dtostrf((double)1234.5675,9,3,buf);

出力結果:" 1234.568"

char buf[16];
dtostrf((double)1234.5674,9,3,buf);

出力結果:" 1234.567"


▲トップページ > マイコンなど