2017-06-14 104 views
1

我在StackOverflow中搜索了很多其他问题,但是他们都没有真正解决我的问题。在linux内核模块中的浮点操作(再次)

我写一个Linux内核模块,我需要计算潜水百分比值的整数被另一个整数为了得到一个浮点值范围介于0和100:

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

对于所有我们已经知道的原因,当我尝试编译它时,我得到“SSE寄存器返回,SSE禁用”错误。

是否有解决方案来计算Linux内核模块内部的这种划分?

非常感谢。 Antonio

回答

6

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

int perc = 100 * v1/v2; 

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

+1

它的工作原理,谢谢! –

+2

+1在内核中执行浮点的正确方法是不做。 OP:你有什么理由必须以浮点的方式来做到这一点? – tangrs

+0

FOP不是必须的,@Paul提供的解决方法解决了问题。 –