2015-05-02 138 views
-2

我有2个“DNA链”。我想找到两股之间的相似性。它必须是一个百分比,我知道16/20将导致零。我该怎么编码?如何获得相似度百分比?

public class JoshuaIshaanAnalyzer1 
{ 
    public static void main(String[]args) 
    { 
     System.out.println("DNA Analyzer 1.0"); 

     System.out.println(" "); 

     int similarity = 0; 

     char [] testStrand = {'A','T','T','A','G','A','C','A','T','G','G','A','G','T','T','A','C','C','A','T'}; 

     char [] targetStrand = {'A','T','A','A','G','A','C','A','A','C','G','A','G','A','T','A','C','C','A','T'}; 

     System.out.print("Test Strand: "); 

     for (int i=0; i<testStrand.length; i++) 
      { 
       System.out.print(testStrand[i]); 
      } 

     System.out.println(" "); 

     System.out.print("Target Strand: "); 

     for (int i=0; i<targetStrand.length; i++) 
     { 
      System.out.print(targetStrand[i]); 

     } 


     for (int i=0; i<19; i++) 
     { 
      if (testStrand[i] == targetStrand[i]) 
       { 
        similarity++; 
       } 
     }  
    } 
} 

共有20个字符。

+0

使用'float'或'double' – kaykay

+0

@kaykay我该怎么做? – JoJo

+0

如果你想要的百分比,并只使用分割100的元素的数量,只是乘以100 *之前*分割,例如, '(100 * 16)/ 20' = 80或简化为'5 * 16'。否则,请参阅kaykay的评论。 – fabian

回答

1

您需要执行除法时将您的intfloat

int numerator; 
int denominator; 
float percentage = (numerator * 100f)/denominator; 

这里的关键是乘以100f。它会做两两件事:

  1. 你的表达结果float
  2. 您的值(0.8)转换为百分比(80)转换。
相关问题