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