在Java中没有格式化的数据遵循以下原则:
DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般情况下可以在实例化DecimalFormat对象时传递数字格式,也可以通过DecimalFormat类中的appyPattem()方法来实现数字格式化。当格式化数字时,在DecimalFormat类中使用一-些特殊字符构成-一个格式化模板,使数字按照一定的特殊字符规则进行匹配。在下表列举了格式化模板中的特殊字符及其所代表的含义。
例:
public class DecimalFormatSimpleDemo {
// 使用实例化对象时设置格式化模式
static public void SimgleFormat(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);
String output = myFormat.format(value);
System.out.println(value + " " + pattern + " " + output);
}
// 数字分组
static public void GroupingSize() {
DecimalFormat myFormat = new DecimalFormat();
myFormat.setGroupingSize(2);
String output = myFormat.format(123456.789);
System.out.println("将数字以每两个数字分组:" + output);
myFormat.setGroupingUsed(false);
System.out.println("不允许个数字分组:" + output);
}
public static void main(String[] args) {
// 调用静态SimgleFormat()方法
SimgleFormat("###,###.###", 123456.789);
// 在数字后加上单位
SimgleFormat("00000000.###kg", 123456.789);
// 按照格式模板格式化数字,不存在的位以0显示
SimgleFormat("000000.000", 123.78);
// 调用静态UseApplyPatternMethodFormat()方法,将数字转换为百分数形式
UseApplyPatternMethodFormat("#.###%", 0.789);
// 将小数点后格式化为两位
UseApplyPatternMethodFormat("###.##", 123456.789);
// 将数字转化为千分数形式
UseApplyPatternMethodFormat("0.00\u2030", 0.789);
// 数字分组
GroupingSize();
}
}
输出:
Java中提供了一个执行数学基本运算的Math类,在Math类中的常用数学运算方法较多,大致可以将其分为4大类别,分别为三角函数方法、指数函数方法、取整函数方法以及取最大值、最小值和绝对值函数方法。除此之外还包含一些常用数学常量,如PI、E等。
可使用如下形式调用:
Math.数学方法
例:
// 取90度的正弦
System.out.println("90度的正弦值:" + Math.sin(Math.PI / 2));
// 取120度的弧度值
System.out.println("120度的弧度值:" + Math.toRadians(120.0));
// 取e的2次方
System.out.println("e的平方值:" + Math.exp(2));
// 取以e为底2的对数
System.out.println("以e为底2的对数值:" + Math.log(2));
// 将参数加上0.5后返回最接近的整数
System.out.println("使用round()方法取整:" + Math.round(3.4f));
// 取两个参数的最小值
System.out.println("4.4和4较小者:" + Math.min(4.4, 4));
输出:
在Math类中存在-一个random0方法,用于产生随机数字,这个方法默认生成大于等于0.0且小于1.0的double型随机数,即0<=Math,random0<1.0,虽然Math.random0方法只可以产生0-1之间的double型数字,其实只要在Math.randomQ语句上稍加处理,就可以使用这个方法产生任意范围的随机数。
除了Math类中的random0)方法可以获取随机数之外,Java中还提供了一种可以获取随机数的方式,那就是java.util.Random类。可以通过实例化一个Random对象创建一个随机数生成器。
Random r = new Random();
以这种方式实例化对象时,Java 编译器以系统当前时间作为随机数生成器的种子,因为每时每刻的时间不可能相同,所以产生的随机数将不同,但是如果运行速度太快,也会产生两次运行结果相同的随机数。同时也可以在实例化Random类对象时,设置随机数生成器的种子。语法如下:
Random r = new Random(seedValue); // seedValue为随机数生成器的种子
在Random获取各种数据类型随机数的方法:
例:
// 2~15随机数
int num1 = 2, num2 = 15;
int s = (int) num1 + (int) (Math.random() * (num2 - num1));
System.out.println(s);
// a~z随机字符
char cha1 = 'a', cha2 = 'z';
char cha = (char) (cha1 + Math.random() * (cha2 - cha1 + 1));
System.out.println(cha);
输出:
在Java中提供了大数字的操作类,即java.math.BigInteger类与java.math.BigDecimal 类。这两个类用于高精度计算,其中BigInteger类是针对大整数的处理类,而BigDecimal类则是针对大小数的处理类。
BigInteger 支持任意精度的整数,也就是说在运算中BigInteger 类型可以准确地表示任何大小的整数值而不会丢失任何信息。使用BigInteger 类,可以实例化-一个BigInteger 对象,并自动调用相应的构造函数。BigInteger 类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。
public BigInteger(String val)
val:十进制
BigInteger 运算:
BigDecimal类支持任何精度的定点数。常用的两个构造方法如下:
BigDecimal类型的数字可以用来做超大的浮点数的运算,如加、减、乘、除等,但是在所有的运算中除法是最复杂的,因为在除不尽的情况下末位小数点的处理是需要考虑的。
下面列举了BigDecimal类中实现加、减、乘、除的方法。
在上述方法中,BigDecimal类 中divideO方法有多种设置,用于返回商末位小数点的处理,这些模式的名称与含义下表所示。
例:
public class BigDecimalDemo {
// 定义除法方法,参数分别为除数与被除数以及商小数点后的位数
public BigDecimal div(double value1, double value2, int b) {
if (b < 0) {
System.out.println("b值必须大于等于0");
}
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
// 调用除法方法(b1 / b2),商小数点后保留b位,并将结果进行四舍五入操作
return b1.divide(b2, b, BigDecimal.ROUND_HALF_UP);
}
public static void main(String[] args) {
// 实例化一个大数字
BigInteger bigInstance = new BigInteger("4");
// 取该大数字除以2的操作
System.out.println("除法操作:"
+ bigInstance.divide(new BigInteger("2")));
// 取该大数字除以3的商
System.out.println("取商:"
+ bigInstance.divideAndRemainder(new BigInteger("3"))[0]);
// 取该大数字除以3的余数
System.out.println("取余数:"
+ bigInstance.divideAndRemainder(new BigInteger("3"))[1]);
// 两个数字相除,保留小数后5位
BigDecimalDemo b = new BigDecimalDemo();
System.out.println("两个数字相除,保留小数后5位:"+b.div(-7.5,8.9, 5));
}
}
输出: