我是Java的新手,我想知道有没有办法让该区域的总值和环绕度舍入到小数点后一位?它不断输出整数,我不想要那个。
package exercises;
import java.util.Scanner;
public class Exercises {
public static void main(String[] args) {
Scanner user_input = new Scanner (System.in);
System.out.println("Enter a value to represent the radius of a circle.");
String radius = user_input.next();
int radiusValue = Integer.parseInt(radius);
int area = (int) (Math.PI * radiusValue * radiusValue);
int circumference = (int) (2 * Math.PI * radiusValue);
System.out.println("The area is: " + area + " and the circumference is: " + circumference);
}
}
答案 0 :(得分:0)
您不能将int
数据类型用于十进制数,因为int
if用于整数。
如果您可以处理小精度错误,则可以使用float
或double
等浮点数据类型,否则应使用BigDecimal
类。
答案 1 :(得分:0)
DecimalFormat formatter = new DecimalFormat("#.#");
Double area = (Math.PI * radiusValue * radiusValue);
Double circumference = (2 * Math.PI * radiusValue);
area = Double.parseDouble(formatter.format(area));
circumference = Double.parseDouble(formatter.format(formatter));
整数是整数,不允许小数。
DecimalFormat是允许你解析和格式化数字的类,'#'表示整数或数字,小数后面的'#'表示你答案中需要的小数位数,所以在你的情况下' #。#'表示一位小数。要格式化你的double,你需要使用DecimalFormat中的format方法,但是format方法的结果是在String中,所以如果你需要它们在double中使用它作为一个数字,那么你需要将它解析为double。
答案 2 :(得分:0)
如前所述,要存储甚至单个小数位,你必须使用非整数类型(所以float在这里是完美的)。但是,没有人说你必须显示所有可用的小数位 - 也许这会给你一些提示如何以更愉快的形式显示你的结果:
https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
答案 3 :(得分:0)
您需要将数据类型更改为float
或double
,具体取决于计算中所需的精度。查看https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html上的官方文档,了解有关可用数据类型的更多信息。
如果您因为演示文稿之外的其他原因需要舍入数字,则可以使用Math.round(arg)
这样的内容:
Scanner userInput = new Scanner(System.in);
System.out.println("Enter a value to represent the radius of a circle.");
String radius = userInput.next();
float radiusValue = Float.parseFloat(radius);
float area = Math.round(((float) (Math.PI * radiusValue * radiusValue)) * 10F) / 10F;
float circumference = Math.round(((float) (2F * Math.PI * radiusValue)) * 10F) / 10F;
Math.round(arg)
将其double
或float
参数舍入到最接近的整数,因此通过将原始值乘以10,将其舍入然后除以10,最终得到原始数字四舍五入到小数点后一位。
如果只是表示您需要精确度,请查看DecimalFormat
课程,如您对问题的另一个回复中所述。