Java 中的四舍五入小数

Rounding Decimals in Java

所以,我正在编写一个程序,让用户插入分子和分母,程序将伪分数转换为小数。它工作正常,只有一件事。第一,如果我输入一个重复小数的分数(例如 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 的问题时,请展示一些研究,关于这个的 post 和在线教程数以千计。最好能展示一下你尝试过什么,什么不起作用......