简单的问题,我找到了与此接近的答案,但没有任何帮助我。我希望它在小数点后有 4 个数字的代码末尾打印出一个百分比,当然,使用 int work work 。但是使用 float 会给我一个错误。
这段代码:
import java.util.Scanner;
public class HW2johnson_pp4 {
public static void main(String args[]) {
Scanner keyboard = new Scanner(System.in);
System.out.printf("How many numbers will you enter?\n");
float[] numbers = new float[keyboard.nextFloat()];
System.out.printf("Enter " + numbers.length + " integers, one per line:\n");
for (int i = 0; i <= numbers.length - 1; i++) {
numbers[i] = keyboard.nextInt();
}
float sum = 0;
for (int i = 0; i <= numbers.length - 1; i++) {
sum += numbers[i];
}
System.out.printf("The sum is " + sum + "\n");
System.out.printf("The numbers are:\n");
for (int i = 0; i <= numbers.length - 1; i++) {
float perc = (numbers[i] / sum);
float perct = (perc * 100);
System.out.printf(numbers[i] + " which is " + perct + "%% of the sum.\n");
}
}
}
给出错误:
HW2johnson_pp4.java:8: possible loss of precision
found : float
required: int
float[] numbers = new float[keyboard.nextFloat()];
最佳答案
您无法创建长度为浮点值的 float 数组。也就是说,你不能拥有一个包含 2.7 个元素的数组。
因此长度参数中的 float 正在四舍五入,导致精度损失。
您希望 keyboard.nextInt()
位于第 8 行,而 keyboard.nextFloat()
位于第 13 行下方。
关于java - Java 可能出现精度损失错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9339052/