2017-06-14 103 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提供的解決方法解決了問題。 –