找回密码
 立即注册
搜索
查看: 249|回复: 0

[Arduino 语法参考] float(单精度浮点型)

[复制链接]

266

主题

0

回帖

1119

积分

管理员

积分
1119
发表于 2024-3-15 02:15:04 | 显示全部楼层 |阅读模式

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

浮点数学运算在执行计算时比整数数学运算慢得多,因此应该避免使用,例如,当循环必须以最快速度运行以执行一个对时间有严格要求的功能时。程序员通常会费尽心思将浮点计算转换为整数数学运算以提高速度。

扩展阅读



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|棱讯科技 ( 粤ICP备2024228160号-2|粤公网安备44030002003510号 )

GMT+8, 2024-7-27 18:16 , Processed in 0.016478 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表