Java Top.

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程

1.概述

在这个简短的教程中,我们将学习如何绕过一个数字NJava的小数点。

进一步阅读:

Java中整数中的数字数

了解java中整数中的不同方式的不同方式。

检查一个数字是否是Java中的素数

了解如何使用Java检查数字的原始性。

检查java中字符串是否为数字

探索不同的方法来确定字符串是否为数字。

2. Java中的十进制数

Java提供了两个可以用于存储十进制数字的原始类型:漂浮双倍的双倍的是默认类型:

双pi = 3.1415;

但是,我们永远不应该使用任何类型的精确值,如货币。为此,还有四舍五入,我们可以使用大二世班级。

3.格式化十进制数

如果我们只是想打印十进制数字N小数点后的数字,我们可以简单地格式化输出字符串:

system.out.printf(“值为3位数在十进制点%n%n”,pi);//输出:十进制点3.142后的3位数字

或者,我们可以使用该值格式化decimalformat班级:

decimalformat df = new decimalformat(“###。###”);system.out.println(df.format(pi));

decimalformat允许我们明确地设置舍入行为,从而控制输出的控制string.format()以上使用。

4.四舍五入双倍的S搭配大二世

到圆双倍的s到N小数点,我们可以写一个帮助方法

私有静态双轮(双重值,int位置){if(place <0)抛出新的IllegalAlargumentException();BigDecimal BD = New BigDecimal(Double.ToString(价值));bd = bd.setscale(地点,roundingmode.half_up);返回bd.doublevalue();}

在这个解决方案中有一个重要的事情要注意到;建造时大二世, 我们必须始终使用bigdecimal(字符串)构造函数。这可以防止代表不精确值的问题。

我们可以通过使用来达到相同的结果Apache Commons Math.图书馆:

<依赖>  org.apache.commons   Commons-Math3   3.5  

可以找到最新版本这里

一旦我们将库添加到项目,我们就可以使用precision.round()方法,采用两个参数 - 值和比例:

精度。命中(PI,3);

默认情况下,它使用相同half_up.舍入方法作为我们的辅助方法;因此,结果应该是相同的。

请注意,我们可以通过将所需的舍入方法作为第三个参数来更改舍入行为。

5.舍入双打doublerounder.

doublerounder.是一种效用DECIMAL4J.图书馆。它提供了一种快速和垃圾方法,用于舍入0到18小数点。

我们可以获得图书馆(可以找到最新版本这里)通过添加依赖性pom.xml.

<依赖项>  org.decimal4j   DECIMAL4J   1.0.3  

现在我们可以简单地使用:

doublerounder.round(pi,3);

然而,doublerounder.在几个方案中失败:

system.out.println(doublerounder.round(256.025d,2));//输出:256.02而不是预期256.03

6. math.round()方法

另一种舍入数量的方式是使用math.round()方法。

在这种情况下,我们可以控制N通过乘以和除以乘以小数点的数量10 ^ n

公共静态双圆形(双重值,int地方){Double Scale = Math.Pow(10,地方);返回math.round(值*比例)/比例;}

不建议使用此方法,因为它会截断值。在许多情况下,值不正确舍入:

system.out.println(圆形签名(1000.0d,17));//输出:92.23372036854776 !!system.out.println(圆域(260.775d,2));//输出:260.77而不是预期260.78

结果,此方法在此列出仅用于学习目的。

7.结论

在本文中,我们涵盖了舍入数量的不同技术N小数点。

我们可以简单地格式化输出而不更改值,或者我们可以通过使用辅助方法来围绕变量。我们还讨论了一些处理此问题的图书馆。

可以找到本文中使用的代码在github上

Java底部

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程
1评论
最老的
最新
内联反馈
查看所有评论
评论在本文上关闭!