linux 内核模块中的浮点运算(再次)

Floating point operations in linux kernel module (again)

我在 Whosebug 中搜索了很多其他问题,但是 none 确实解决了我的问题。

我正在编写一个 linux 内核模块,我需要通过将一个整数除以另一个整数来计算百分比值,以获得介于 0 和 100 之间的浮点值:

int v1 = 5;
int v2 = 25;
float perc = v1 / v2;

由于我们已经知道的所有原因,当我尝试编译它时,我得到了“SSE 寄存器 return with SSE disabled”错误。

是否有在 Linux 内核模块中计算此类除法的解决方法?

非常感谢。 安东尼奥

您可以只使用整数运算,例如

int perc = 100 * v1 / v2;

这将给出一个整数百分比。如果您需要高于 1% 的分辨率,则使用大于 100 的比例因子,并根据需要插入小数点以供显示。