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