2013-05-01 95 views
1

(我是C++的初學者)。我已經有了正確數量的不匹配,並且我的程序中的所有內容都可以正常工作,但是當我嘗試實際計算它時,百分比就會變成0.這是我的代碼的一部分(特別是唯一出現問題的部分)。有人可以向我解釋我做錯了什麼嗎?兩個字符串之間的百分比相似度

if(input.length() >= input2.length()) 
    { 
     percentage = (uiLevenshteinDistance(input,input2)/input.size())*100; 
     cout << "These sequences are " << percentage << "% similar." << endl; 
    } 
    else if(input2.length() >= input.length()) 
    { 
     percentage = (uiLevenshteinDistance(input,input2)/input2.size())*100; 
     cout << "These sequences are " << percentage << "% similiar." << endl; 
    } 
+1

整數除法。 '1/2'產生'0'。 – juanchopanza 2013-05-01 05:28:40

+0

你想分兩個整數嗎?如果你想得到一個浮點結果,你至少需要將其中的一個整型轉換爲float或double。 – MatthewD 2013-05-01 05:39:58

+0

這個問題與Levenshtein距離無關。 – 2013-05-01 06:47:26

回答

1

請確保您的分子或分割你的分母是雙/浮法否則你將永遠從導致一些< 1.

喜歡的東西(double)uiLevenshteinDistance(input,input2)/input.size())會做一個部門得到0。

+0

謝謝! :)這是我缺少的鏈接。 – user2338411 2013-05-01 05:31:59

+0

如果你想要百分比(他這樣做),最簡單的解決方案是在分割前用分子乘以100.0。乘法中的加倍會迫使所有進一步的操作使用'double'。 (是的,100.0 * x/y與'x/y * 100.0'完全不同的結果是非常直觀的,但是C++並不孤單。 – 2013-05-01 08:09:32

相關問題