你好,我用的是PIC16F1829,在处理浮点值时有问题。它与MCP3421 ADC芯片一起用来测量电压或电流,这个项目的目的是建立一个DMM。在18位模式下,MCP3421给出三个字节的读数,对应于131071的amax计数,pLUS符号位。要将其转换为电压需要一些浮点运算。为了显示结果,我打算使用ftoa(float to ascii)函数。以下是我为测试部分过程而编写的一小段代码。它提取值的小数部分,乘以10^6,将结果强制转换为s整数,并使用整数到字符串函数将其转换为ascii。我已经测试过,整数到字符串函数在值为2147483647(即2^31-1,32位,1位用于符号)时正确工作。但是,当我尝试提取分数部分时,结果并不正确。例如,浮点值123.870012将所提取的分数部分显示为869184。对于较大的整数部分,误差变得更大,例如对于123456.870012,所提取的分数部分为0。尺寸适中,如6.3450,一切正常,抽取的分数为3450。我怀疑这是PIC16F1829芯片固有的局限性,但是我无法在数据表中找到任何关于它如何处理浮点数的信息。有什么办法可以达到更好的准确度?当我使用CC386 IDE在另一个C编译器(不编程芯片)上运行上述代码时,即使对于大值和小数部分到8或更多的小数位,也能得到正确的结果。非常感谢您的帮助。肯。