|
Java中数字格式化
在解决实际问题时,对数字的处理是非常普遍的,如数学问题、随机问题、商业货币问题、科学计数问题等。为了应对以上问题,Java提供了处理相关问题的类,包括DecimalFormat类(用于格式化数字)、Math类(为各种数学计算提供了工具方法)、Random类(为Java处理随机数问题提供了分钟方法)、BigInteger类与BigDecimal类(为所有大数字的处理提供了相应的数学运算操作方法)。
下面一一介绍这个数字处理类:
一、数字格式化
在Java中使用java.text.DecimalFormat格式化数字。
在Java中没有格式化的数据遵循以下原则:
1.如果数据绝对值大于0.001并且小于10000000,Java将以常规小数形式表示。
2.如果数据绝对值小于0.001或者大于10000000,使用科学记数法表示。
DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般情况下可以在实例化DecimalFormat对象时传递数字格式化,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。
package hello;
import java.text.DecimalFormat; //引入 类
public class DecimalFormatSimpleDemo { //使用实例化对象时设置格式模式
static public void SimpleFormat(String pattern,double value) {
DecimalFormat myFormat = new DecimalFormat(pattern);
String output = myFormat.format(value);
System.out.println(value+" "+pattern+" "+output);
} //使用applyPattern()方法对数字进行格式化
static public void UseApplyPatternMethodFormat(String pattern,double value) {
DecimalFormat myFormat = new DecimalFormat();
myFormat.applyPattern(pattern);
System.out.println(value+" "+pattern+" "+myFormat.format(value));
}
public static void main(String[] args) {
SimpleFormat("###,###.###",123456.789);
SimpleFormat("00000000.###kg",123456.789);
SimpleFormat("000000.000",123.78);
UseApplyPatternMethodFormat("#.###%",0.789);
UseApplyPatternMethodFormat("###.##",123456.789);
UseApplyPatternMethodFormat("0.00\u2030",0.789);
}
} |

从以上两个方法的结果可以看出以“0” 特殊字符构成的模板进行格式化时,当数字某位不存在时,将显示0;而以“#” 特殊字符构成的模板进行格式化操作时,格式化后的数字位数与数字本身的位数一致。
在DecimalFormat类中除了可以设置格式化模式来格式化数字之外,还可以使用一些特殊方法对数字进行格式化设置。
DecimalFormat myFormat = new DecimalFormat(); //实例化DecimalFormat类对象
myFormat.setGroupingSize(2); //设置数字分组的大小
myFormat.setGroupingUsed(false); //设置是否支持分组 |
import java.text.DecimalFormat;
public class DeciamlMethod {
public static void main(String[] args) { // TODO 自动生成的方法存根
DecimalFormat myFormat = new DecimalFormat();
myFormat.setGroupingSize(2); //设置将数字分组为2
String output = myFormat.format(123456.789);
System.out.println("将数字以每两个数字分组 "+output);
myFormat.setGroupingUsed(false); //设置不允许数字分组
String output2 = myFormat.format(123456.789);
System.out.println("不允许数字分组 "+output2);
}
} |
————————————————
原文链接:https://blog.csdn.net/qq_41045071/article/details/81252051
程序猿的技术大观园:www.javathinker.net
[这个贴子最后由 sunweiqin 在 2020-01-11 21:45:40 重新编辑]
|
|