Java Top.

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

>>查看课程

1.概述

在本教程中,我们将查看Java中的数字格式化的不同方法以及如何实现它们。

2.基本数字格式化字符串#格式

字符串#格式方法对于格式化数字非常有用。该方法需要两个参数。第一个参数描述了我们想要查看多少小数的模式,第二个参数是给定的值:

双值= 4.2352989244d;assertthat(string.format(“%。2f”,值))。isequalto(“4.24”);asserthat(string.format(“%.3f”,值))。isequalto(“4.235”);

3.舍入的十进制格式

在Java中,我们有代表十进制数的两个原始类型-漂浮十进制

双倍mydouble = 7.8723d;float myfloat = 7.8723f;

根据正在执行的操作,小数位数可能不同。在大多数情况下,我们只对第一个小数点的地方感兴趣。让我们来看看一些方法来通过舍入来格式化十进制。

3.1。使用大二世用于数字格式化

大二世类为舍入到指定数量的小数位提供方法。让我们创建一个辅助方法,将返回双重,舍入到所需的位置:

公共静态双倍与b b(双重值,int posts){bigdecimal bigdecimal = new bigdecimal(价值);bigdecimal = bigdecimal.setscale(地方,roundingmode.half_up);返回bigdecimal.doublevalue();}

我们从一个新的实例开始大二世我们的原始十进制值。然后,通过设置规模,我们提供了我们想要的小数点数以及我们如何围绕我们的号码。使用此方法允许我们轻松格式化a双倍的价值:

双D = 4.2352989244D;assertthat(含有ybigdecimal(d,2))。isequalto(4.24);assertthat(含有ybigdecimal(d,3))。isequalto(4.235);

3.2。使用数学#圆形

我们也可以利用静态方法数学班级圆A.双倍的值为指定的小数位。在这种情况下,我们可以通过乘以乘以乘以分割小数位数10 ^ n。让我们检查我们的帮助方法:

公共静态双重含有(双重值,int位置){双级= math.pow(10,地方);返回math.round(值*比例)/比例;}
assertthat(achround(d,2))。isequalto(4.24);assertthat(achround(d,3))。isequalto(4.235);

但是,只有在特定情况下才会建议使用,因为有时输出可能会在其上打印之前舍入。

这是因为数学#圆形截断值。让我们看看这会发生如何:

system.out.println(indmathround(1000.0d,17));//给出:92.23372036854776 !!system.out.println(indmathround(260.775d,2));//给出:260.77而不是预期260.78

因此,该方法仅列出了学习目的。

4.格式化不同类型的数字

在一些特定的情况下,我们可能希望为特定类型的类型格式化一个数字,如货币,大型整数或百分比。

4.1。使用逗号格式化大型整数

每当我们在我们的应用程序中有一个大型整数时,我们可能希望通过使用逗号显示它decimalformat具有预定义模式:

public静态字符串withlargeintegers(double值){decimalformat df = new decimalformat(“###,###,###”);返回df.format(价值);int值= 123456789;assertthat(随着纪念品(价值))。isequalto(“123,456,789”);

4.2。填充一个数字

在某些情况下,我们可能希望用零的零点填充一个数字。在这里,我们可以使用字符串#格式方法,如前所述:

公共静态字符串bypaddingzeros(int值,int paddinglength){return string.format(“%0”+ paddinglength +“d”,值);} int值= 1;Assertthat(Bypaddingoutzeros(价值,3))。isequalto(“001”);

4.3。在十进制之后格式化两个零的数字

要能够在小数点后用两个零打印任何给定的数字,我们将再使用一次decimalformat具有预定义模式的类:

公共静态双倍withwodecimalplace(双重值){decimalformat df = new decimalformat(“#.00”);返回新的双(df.format(价值));} int值= 12;asserthat(withtwodecimalplaces(值))。isequalto(12.00);

在这种情况下,我们创建了一种新格式,具有在小数点后指定两个零的模式

4.4。格式化和百分比

我们可能需要显示百分比。

在这种情况下,我们可以使用NumberFormat#getPercentimstance.方法。这种方法允许我们提供一个地区以正确的格式打印值对您指定的国家/地区的格式:

公共静态字符串不应组(双重值,区域设置区域设置){NumberFormat NF = NumberFormat.getPercentInstance(Locale);返回nf.format(价值);双值= 25F / 100f;assertthat(不值守(价值,新区域设置(“en”,“美国”)))))。isequalto(“25%”);

4.5。货币号码格式

一种常见的方式储存货币在我们的应用程序中是使用的大二世。如果我们想要什么呢展示它们给用户?在这种情况下,我们可以使用NumberFormat.班级:

公共静态字符串CupparyWithChosenChosisation(Double Value,Locale Locale){NumberFormat NF = NumberFormat.getCurrengyInstance(Locale);返回nf.format(价值);}

我们获得给定的货币实例地区然后只需打电话给格式具有值的方法。结果是显示指定国家/地区的货币的数字:

双值= 23_500;Assertthat(CurrencyWithChosenChosisation(价值,新区域设置(“en”,“美国”))))。Isequalto(“23,500.00美元”);Assertthat(CurrencyWithChosenChosisation(价值,新区域设置(“ZH”,“CN”))))。isequalto(“¥23,500.00”);Assertthat(CurrencyWithChosenCalisation(价值,新区域设置(“PL”,“PL”)))))。isequalto(“23 500zł”);

5.高级格式化用例

decimalformat是在Java中格式化十进制数的最流行方式之一。与前面的例子类似,我们将编写辅助方法:

公共静态双重含有释放点(双重值){decimalformat df =(decimalformat)numberformat.getnumberinstance(locale.getdefault());返回新的双(df.format(价值));}

我们的格式类型将获得给定本地化的默认设置。

使用其数字系统在不同国家/地区的不同地处理十进制格式。例如,分组字符(在美国逗号中,但其他语言环境中的空间或点),分组大小(美国和大多数地区的三个,印度不同),或十进制字符(美国的DOT,但是逗号在其他地方)。

双D = 4.2352989244D;assertthat(含有dimalformatlocal(d))。isequalto(4.235);

我们还可以扩展此功能以提供一些特定模式:

公共静态双重含有dimalformatpattern(双重值,int位置){decimalformat df2 = new decimalformat(“#,###,###,## 0.00”);decimalformat df3 = new decimalformat(“#,###,###,## 0.000”);if(place == 2)返回新的double(df2.format(值));否则if(peracht == 3)返回新的double(df3.format(值));否则抛出新的IllegalAlargumentException();} assertthat(含有dimalformatpattern(d,2))。isequalto(4.24);assertthat(含有decimalformatpattern(d,3))。isequalto(4.235);

在这里,我们允许我们的用户配置decimalformat通过基于空格数的选择模式。

六,结论

在本文中,我们简要介绍了Java中不同的数字格式化方式。我们可以看到没有人最好的方法。可能遵循许多方法,因为它们中的每一个都有自己的特征。

与始终一样,可以使用以下示例的代码在github上

Java底部

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

>>查看课程
评论在本文上关闭!