将整数舍入到小数点后一位java

时间:2018-02-13 21:25:50

标签: java

我是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);
  }

}

4 个答案:

答案 0 :(得分:0)

您不能将int数据类型用于十进制数,因为int if用于整数。 如果您可以处理小精度错误,则可以使用floatdouble等浮点数据类型,否则应使用BigDecimal类。

对于问题的四舍五入部分,您可以看到enter image description here

的答案

答案 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)

您需要将数据类型更改为floatdouble,具体取决于计算中所需的精度。查看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)将其doublefloat参数舍入到最接近的整数,因此通过将原始值乘以10,将其舍入然后除以10,最终得到原始数字四舍五入到小数点后一位。

如果只是表示您需要精确度,请查看DecimalFormat课程,如您对问题的另一个回复中所述。