TI中文支持网
TI专业的中文技术问题搜集分享网站

在C语言程序里,计算浮点数出现精度问题。1.0f / 0.001f = 999.9999.

#define F32 float
F32 GetRatio(F32 f1, F32 f2)
{
 return (f1 / f2);
}
当f1 = 1, f2 = 0.001时,返回值为999.9999。
希望返回值为1000,对于这种情况,请问有没有好的建议?
非常感谢!
Susan Yang:

能否详细说明下您的问题?您现在使用的软硬件情况是怎样的?

Victor Lee:

回复 Susan Yang:

目前用的软件是CCS,硬件是MSP430F5xxx。

在debug时,调用下面的函数

F32 GetRatio(F32 f1, F32 f2)
{return (f1 / f2);
}

当f1 = 1, f2 = 0.001时,返回值为999.9999。

正常返回值应该是1000的,1 / 0.001 = 1000。

谢谢您的回复!

Susan Yang:

回复 Victor Lee:

对于MSP430的浮点除法,我们有一个专门的文档 Efficient Multiplication and Division Using MSP430, 包含了相应的浮点除法测试代码。

您可以点击下面的链接来获取

www.ti.com/…/slaa329a.pdf

灰小子:

回复 Victor Lee:

如果不是必须使用浮点数,建议把参数都变大1000倍,然后做运算。

赞(0)
未经允许不得转载:TI中文支持网 » 在C语言程序里,计算浮点数出现精度问题。1.0f / 0.001f = 999.9999.
分享到: 更多 (0)