单片机C 浮点数转化为字符数组问题
最近遇到个用stm32做科学计算器的项目,遇到很多问题。因为这个计算器还要有其他功能,所以最后留给计算器部分的内存有点少,这就使程序中不能使用atof、printf、sscanf这类不安全的程序(基本一使用就会报Hard Fault),只能自己实现这些转换算法。前面字符数组转double型还好,在最后计算结果double型转显示字符数组的时候,碰到了浮点数误差问题,比如222会转成221.99999999。这包含了浮点数存储问题和编译器的问题,最后还是使用加偏差值的方法来解决。
//偏差值
#define Double_Deviation -0.00000001
//double转换显示字符数组 数组长度
#define Double2Chars_MaxLenght 17
int Numprc_Double2Int_UnitDigit(double num);
//浮点数转显示字符数组
void Numprc_FtoA(double num, char* str) {
int exp = 1,