Java中的舍入小数

问题描述 投票:3回答:1

所以,我正在制作一个程序,我让用户插入分子和分母,程序将伪分数转换为小数。 它工作正常,只有一件事。 一,如果我输入一个重复小数的分数(例如,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);
    }
}
}    
java decimal rounding fractions
1个回答
2
投票

你可以用这个:

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

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

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

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

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

小其他注意事项:下次你问一个关于SO的问题,请展示一些研究,有成千上万的关于这个的帖子和数千个在线教程。 很高兴展示你尝试过的东西,什么不起作用......

© www.soinside.com 2019 - 2024. All rights reserved.