2015-11-03 144 views
3

所以,我正在制作一个程序,其中我有用户插入分子和分母,程序将伪分数转换为小数。它工作正常,只是一件事。一个,如果我输入一个重复小数的分数(例如1/3,0.3333333 ...),我想要么它说0.33重复,要么是无理数,它会围绕它,让我们说7个数字,并且然后停下来,然后有“......非理性”。我怎么能这样做?代码如下。在Java中舍入小数

package Conversions; 

import java.util.*; 

public class FractionToDecimal { 

public static void main (String[] args) { 
    Scanner sc = new Scanner (System.in); 

    System.out.println("Enter Numerator: "); 
    int numerator = sc.nextInt(); 
    System.out.println("Enter Denominator: "); 
    int denominator = sc.nextInt(); 
    if (denominator == 0) { 
     System.out.println("Can't divide by zero"); 
    } 
    else { 
     double fraction = (double)numerator/denominator; 
     System.out.println(fraction); 
    } 
} 
}  
+1

@Reimeus编辑。谢谢。 –

+3

因此不适合让别人为您编写代码。你需要做自己的作业。继续工作,当你有更具体的问题时,随时提问。 –

+0

http://stackoverflow.com/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java的副本 –

回答

2

您可以使用此:

DecimalFormat df = new DecimalFormat("#.######"); 
df.setRoundingMode(RoundingMode.CEILING); 

,只要你想小数添加尽可能多的#,然后OU可以简单地使用这样的:

Double d = 12345.789123456; 
System.out.println(df.format(d)); 

采用三#会给你例如上面的例子:12345.789

请注意,你当然可以选择舍入模式。

小其他注意事项:下一次你提出一个关于SO的问题,请展示一些研究,这里有成千上万的关于这个的帖子和数以千计的在线教程。这将是很好的展示你已经尝试过什么,不起作用...