1. 简单用法, 不注重格式, 只要有印出就好
要格式化输出,最简单的方法就是直接用 C++ 的 String( ) 串接功能即可:
int height=168;
float weight=72.5;
Serial.println(String("")+"Your Height="+height + ", and Weight=" + weight);
说明: 只要第一个是 String(""), 之后不论整数 int, long, 实数 float 等都会自动转为字符串, 用 + 串接在一起 !
缺点: float 小数点后会印出几位无法控制 ,( 注意 UNO 如果用 double 其实会被偷改为 float )
2. 那如果是要印到 LCD 或 SoftwareSerial 软串口甚至 SPI 呢?
简单, 先放到 String 字符串即可, 之后爱怎样就怎样 :
int height=168;
float weight=72.5;
String gy = String("")+"Your Height="+height + ", and Weight=" + weight;
Serial.println(gy); // 印到串口
LCD.print(gy); // 假设你已经有 LCD. 可以用
3. 如果实数float要印出小数点后两位呢?
只是看起来有点麻烦而已(其实你用 Serial.print(float) 它也是偷偷类似这样做 **注!):
int height=168;
float weight=72.5;
String gy = String("")+"Your Height="+height;
gy += ", and Weight=";
// 开始处理 float weight 的值
long tmp = weight; // 整数部分
long yytmp = (weight -tmp)*100+0.5; // 小数部分; 从小数点后第三位做四舍五入(round)到第二位
/// if(yytmp >= 100) yytmp=99; // 改用以下方法处理 ..
if(yytmp >= 100) { // 防错
yytmp=0;
++tmp; // 0.99xyz.. +0.005 ===> 1.0pqr...
} // it is 0.99xyz...
gy += tmp; // 整数部分
gy += "."; // 小数点, 废话
if(yytmp < 10) gy += "0";
gy += yytmp;
Serial.println(gy); // 印到串口
LCD.print(gy); // 假设你已经有 LCD. 可以用
**注: 严格说来 Serial.print(float); 就是 Serial.print(float, 2);
这时它是用以下(5.)说的用AVR的 dtostrf( ) 函数把 float 转换为包括小数点后两位的字符串!
|