float(单精度浮点型)
[数据类型]
描述
浮点数数据类型,即带有小数点的数字。浮点数通常用于表达模拟和连续值,因为它们比整数具有更高的分辨率。浮点数的范围可以大到 3.4028235E+38,也可以小到 -3.4028235E+38。它们以 32 位(4 字节)的信息形式存储。
语法
float var = val;
参数:
var: 变量名。
val: 要分配给该变量的值。
示例代码
float myfloat;
float sensorCalbrate = 1.117;
int x;
int y;
float z;
x = 1;
y = x / 2; // y现在等于0,因为整数不能存储小数部分
z = (float)x / 2.0; // z现在等于0.5(必须使用2.0,而不是2)【注:实际上可以是2,因为x已经被强制转换为浮点数】
注意事项和警告
如果使用浮点数进行数学运算,需要添加小数点,否则它将被视为整数。有关详细信息,请参阅浮点型常量页面。
浮点数数据类型只有 6 - 7 位小数的精度。这是指总位数,而不是小数点右侧的位数。与其他平台不同,在这些平台上,您可以通过使用 double 来获得更高的精度(可达 15 位数字),但在 Arduino 上(这里指 8 微处理器平台,如 UNO),double 的大小与 float 相同。
浮点数并不精确,进行比较时可能会产生奇怪的结果。例如,9.0 / 0.3 可能并不完全等于 30.0。相反,您应该检查两个数字之间的差的绝对值是否小于某个小数字。
从浮点数转换为整数数学运算时会导致截断:
float x = 2.9; // 一个浮点类型变量
int y = x; // 结果是2,因为小数部分被截断了
如果相反,您想在转换过程中进行四舍五入,则需要添加 0.5:
float x = 2.9;
int y = x + 0.5; // 结果是3,因为进行了四舍五入
或者使用 round() 函数:
float x = 2.9;
int y = round(x); // 结果是3
浮点数学运算在执行计算时比整数数学运算慢得多,因此应该避免使用,例如,当循环必须以最快速度运行以执行一个对时间有严格要求的功能时。程序员通常会费尽心思将浮点计算转换为整数数学运算以提高速度。
扩展阅读
|