2013-12-15 77 views
0

我已经试过这在Javascript中,并已得到我的答案,但我需要的答案必须更确切。我试图用2到1000之间的每个数字除1,然后直接打印出来。For循环,除以一个

public static void main(String [] args) { 
    for (int i=2;i<=1000;i++){ 
     double g = (1/i); 
     System.out.println(g); // print "1/1,2,3,4.....1000" 
    } 
} 

我在一段时间内没有做过Java,所以我忘记了我的正确变量名。

回答

2

取代1通过1.0D,这将导致成double

+0

'D'后缀对于'double'是可选的。 –

+0

只是为了让它可读 –

+0

我需要它比这更精确,但至少有一个数字现在即将出现。谢谢。 – user2962770

0

尝试这种

public static void main (String args[]) { 

      for (int i=2;i<=1000;i++){ 
       double g = (1.0/i); 
       System.out.println("1/"+ig); 
      } 

输出: 0.5 0.3333333333333333 0.25 0.2 0.16666666666666666 0.14285714285714285 0.125 。 。 。 。

0

利用BigDecimal,我会这样做(请注意,您可以拥有任意数量的精度数字)。

public static void main(String[] args) { 
    java.math.BigDecimal ONE = java.math.BigDecimal.ONE; 
    // 50 digits of precision. 
    java.math.MathContext mc = new java.math.MathContext(50); 

    for (int i = 2; i <= 1000; i++) { 
    java.math.BigDecimal divisor = new java.math.BigDecimal(i); 
    java.math.BigDecimal result = ONE.divide(divisor, mc); 
    result.round(mc); 
    System.out.printf("%d/%d = %s\n", 1, i, 
     result.toString()); 
    } 
} 
+0

BigDecimal是我正在寻找的变量,http://ideone.com/7FBtUL我试过在IDEone上,它不起作用... – user2962770

+0

它是'java.math.BigDecimal'和'java.math.MathContext'。 –

+0

哦,谢谢,我复制并粘贴......不知道为什么它没有选择那些。 – user2962770

4

由于两个1i是整数,正在使用整数除法。 1i需要在代码的1/i部分加倍,以便不使用整数除法。您可以执行类似1.0/i1/((double) i)的操作,以确保使用浮点除法。

+0

@ user2962770,这是否回答你的问题? – stiemannkj1