繁体   English   中英

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

[英]Round integers to one decimal place 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);
  }

}

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

对于问题的四舍五入部分,您可以看到此问题的答案

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是允许您解析和格式化数字的类,“#”表示整数或数字,小数点后的“#”表示答案中需要的小数位数,因此在您的情况下为“#。#” '表示小数点后一位。 要格式化双精度数,您需要使用DecimalFormat中的format方法,但是format方法的结果在String中,因此,如果您需要将它们变成double型,然后再将其用作数字,则需要将其解析回double型。

如前所述,要只存储一个小数位,就必须使用非整数类型(因此float在这里很完美)。 但是,没有人说您必须显示所有可用的小数位-也许这会给您一些提示,如何以更舒适的形式显示结果:

https://docs.oracle.com/javase/tutorial/java/data/numberformat.html

您需要根据计算所需的精度将数据类型更改为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类,如对您的问题的另一个答复所述。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM