【发布时间】:2018-07-21 10:29:16
【问题描述】:
我的代码格式有问题。最后,它应该打印出结果。我正在使用 printf 语句,但它返回的数字并不像我需要的那样精确。例如,如果一个数字应为 76.83200000000001,则返回为 76.83200。它还在数字末尾添加了不必要的零,如果一个数字应该是 28.0,它就会变成 28.000000。如果可能,我们可以在没有BigDecimal 变量的情况下执行此操作吗?到目前为止,这是我的代码(注意:某些字符串前面有空格,这是因为我提交的网站出于某种原因需要这样做):
import java.util.Scanner;
public class Population {
public static void main(String[] args) {
Scanner stdin = new Scanner(System.in);
double startingNumber, dailyIncrease, daysWillMultiply, temp, population;
System.out.print("Enter the starting number organisms: ");
startingNumber = stdin.nextDouble();
while(startingNumber < 2) {
System.out.print("Invalid. Must be at least 2. Re-enter: ");
startingNumber = stdin.nextDouble();
}
System.out.print("Enter the daily increase: ");
dailyIncrease = stdin.nextDouble();
while(dailyIncrease < 0) {
System.out.print("Invalid. Enter a non-negative number: ");
dailyIncrease = stdin.nextDouble();
}
System.out.print("Enter the number of days the organisms will multiply: ");
daysWillMultiply = stdin.nextDouble();
while(daysWillMultiply < 1) {
System.out.print("Invalid. Enter 1 or more: ");
daysWillMultiply = stdin.nextDouble();
}
temp = startingNumber * dailyIncrease;
population = startingNumber;
System.out.println("Day\t\tOrganisms");
System.out.println("-----------------------------");
System.out.println("1\t\t" + startingNumber);
for (int x = 2; x <= daysWillMultiply; x++) {
population += temp;
temp = population * dailyIncrease;
System.out.printf(x + "\t\t%f\n", population);
}
}
}
【问题讨论】:
标签: java formatting printf number-formatting