2025-11-08 06:29:33
单片机算浮点数就像用算盘算小数,得先拆成三部分:符号位、小数部分和指数。比如3.14要拆成正号、14和2(因为10的二次方)。单片机用16位或32位存这些数,但算盘珠子有限,算多了就不够用。比如8位处理16位浮点,小数点后只能存7位,第三位就四舍五入了。
为什么得拆三部分?因为这样能让计算更快更省内存。比如加法时先对齐小数点,再按位相加。但拆分会出问题,比如1.0变成1.0000001。根据IEEE754标准,32位浮点能存7位小数,所以第三位就错了。实际测试发现,8位单片机算1.0+0.000001会变成1.0000001,误差超过百万分之七。这是因为指数调整时,小数部分被截断,就像算盘珠子不够装下所有数,只能舍弃几位。所以单片机浮点运算适合简单计算,复杂运算得换专用芯片。
本题链接: