C++ 两个字符串之间的相似度百分比

C++ 两个字符串之间的相似度百分比,c++,string,percentage,C++,String,Percentage,(我是c++的初学者)。我已经有了正确数量的不匹配,我的程序中的一切都很好,但当我尝试实际计算时,百分比为0。这是我代码的一部分(特别是唯一有麻烦的部分)。有人能解释一下我做错了什么吗 if(input.length() >= input2.length()) { percentage = (uiLevenshteinDistance(input,input2)/input.size())*100; cout << "Thes

(我是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;   
    } 
if(input.length()>=input2.length())
{
百分比=(uiLevenshteinDistance(input,input2)/input.size())*100;

cout确保除法中的分子或分母是双精度/浮点数,否则除法中的数值总是0,结果是数值小于1


类似于
(double)uilevenshteindication(input,input2)/input.size())这样的操作就可以了。

确保除法中的分子或分母是双精度/浮点型,否则,除法后的数字总是小于1


类似于
(double)uiLevenshteinDistance(input,input2)/input.size()的内容)
可以。

整数除法。
1/2
产生
0
。你想除掉两个整数吗?如果你想得到浮点结果,你需要先将至少一个整数转换为
浮点
双精度
。这个问题与Levenshtein距离无关。@PeterWood这是我代码的一部分。我d使用Lev Distance,当问题只涉及这一部分时,我不需要键入整个代码。@user2338411如果您将代码缩减为a,问题标题就不会是字符串的百分比相似性,而是整数除法,您自己会有更好的机会解决它,否则通过搜索找到答案。整数除法。
1/2
产生
0
。你想除法两个整数吗?如果你想得到一个浮点结果,你需要先将至少一个整数转换为
浮点
双精度
。这个问题与Levenshtein距离无关。@PeterWood这是我的一部分代码。我确实使用了Lev Distance,当问题只涉及这一部分时,我不需要键入整个代码。@user2338411如果您将代码缩减为a,问题标题就不会是关于字符串的百分比相似性,而是关于整数除法,您将有更好的机会自己解决它lf,或者通过搜索找到答案。如果您想要百分比(他需要),最简单的解决方案是在除法之前将分子乘以
100.0
。乘法中的double强制所有后续操作使用
double
。(是的,这是非常违反直觉的,<代码> 100×x/y与 x/y* 100 相比,产生了根本不同的结果。但是,C++中并不是唯一的。)在需要百分比的情况下(他这样做),最简单的解决方案是在除法之前将分子乘以
100.0
。乘法中的double强制所有后续操作使用
double
。(是的,这非常违反直觉,<代码> 100×x/y与 x/y* 100 相比,产生了根本不同的结果。但是C++并不是唯一的。