所以,我正在制作一个程序,我让用户插入分子和分母,程序将伪分数转换为小数。 它工作正常,只有一件事。 一,如果我输入一个重复小数的分数(例如,1 / 3,0.3333333 ......),我要么要么说0.33重复,要么是无理数,它会在让我们说7位数之后将其舍入,并且然后停下来,然后“......非理性”。 我怎么能这样做? 代码如下。
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);
}
}
}
你可以用这个:
DecimalFormat df = new DecimalFormat("#.######");
df.setRoundingMode(RoundingMode.CEILING);
添加尽可能多的#
,你想要小数,然后你可以简单地使用它:
Double d = 12345.789123456;
System.out.println(df.format(d));
使用三个#
会给你上面的例子:例如12345.789
。
请注意,您当然可以选择舍入模式。
小其他注意事项:下次你问一个关于SO的问题,请展示一些研究,有成千上万的关于这个的帖子和数千个在线教程。 很高兴展示你尝试过的东西,什么不起作用......