数字格式化:
数字格式化在解决实际问题是非常普遍的,如表示某超市的商品价格,需要保留两位有效数字。
java主要对浮点型数据进行数字格式化操作,其中浮点型数据包括double型和float型数据,
在java中使用java.text.DecimalFormat格式化数字。
在java中没有格式化数据循环以下原则
如果数据绝对值大于0.001并且小于10000000,java将以常规小数形式表示
如果数据绝对值小于0.001并且大于10000000,使用科学记数法表示。
DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字。
它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。
一般情况下可以在实例化DecimalFormat对象时传递数字格式化,也可以通过DecimalFormat类中的applyPattern()
方法来实现数字格式化
下面这组代码是在类中分别定义SimpleFormat()方法和UseApplyPatternMethodFormat() 方法实现两种格式化数字的方式
public class DecimalFormatSimpleDemo {
//实例化DecimalFormat对象
static public void SimgleFormat(String pattern,double value){
//实例化DecimalFormat对象
DecimalFormat myFormat=new DecimalFormat(pattern);
String output=myFormat.format(value);//将数字进行格式化
System.out.println(value+""+pattern+""+output);
}
static public void UserApplyPatternMethodFormat(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) {
SimgleFormat("###,###.###", 123456.789);
SimgleFormat("00000000.###kg",12346.789);
//按照格式模板格式化数字,不存在的位以0显示。
SimgleFormat("000000.000",123.78);
UserApplyPatternMethodFormat("#.###%",0.789);
//将小鼠点后格式化两位
UserApplyPatternMethodFormat("###.##",123456.789);
//将数字转化为千分数形式
UserApplyPatternMethodFormat("0.00u2030",0.789);
}
}
执行结果:
123456.789###,###.###123,456.789
12346.78900000000.###kg00012346.789kg
123.78000000.000000123.780
0.789#.###%78.9%
123456.789###.##123456.79
0.7890.00‰789.00‰
数字运算
Math:在math类中提供了众多数学函数方法,主要包括三角函数方法、指数函数方法、取整函数方法、取最大值,常用运算方法,运算函数的方法,以及平均值函数方法,这些方法都被定位static形式
public class Mathematical_operation_method_三角函数 {
public static void main(String[] args) {
//取75°的弦
System.out.println("75度的正玄机值:"+Math.sin(Math.PI/2));
//取75°余弦
System.out.println("75度的余弦值:"+Math.cos(75));
//取75°正切
System.out.println("75度的正切"+Math.tan(Math.PI/3));
//取75°的平方根与商的反正弦
System.out.println("75的平方根与商的反弦值"+Math.asin(Math.sqrt(75)/75));
//取75°的平方根与商的反余弦
System.out.println("75的平方根与商的反弦值"+Math.acos(Math.sqrt(75)/75));
//取75°的反正切值
System.out.println("75的反正切值"+Math.atan(1));
//取75°的弧度值
System.out.println("75°的弧度值"+Math.toRadians(75.0));
//取Π/2的角度
System.out.println("Π的角度值"+Math.toDegrees(Math.PI/2));
}
}
执行结果:
75度的正玄机值:1.0
75度的余弦值:0.9217512697247493
75度的正切1.7320508075688767
75的平方根与商7853981633974483
75°的弧度值1.3089969389957472
Π的角度值90.0
指数函数方法:指数运算包括求方根、取对数以及求N次方的运算。实现指数函数运算
//求e的平方值
System.out.println("e的平方值"+Math.log(2));
//取以10为底2的对数
System.out.println("以10为底2的数值:"+Math.log10(2));
//取4的平方根
System.out.println("4的平方根植"+Math.sqrt(4));
//取8的立方根值
System.out.println("8的立方根值"+Math.cbrt(8));
//取2的2次方值
System.out.println("2的2次方值"+Math.pow(2,2));
}
}
以10为底2的数值:0.3010299956639812
4的平方根植2.0
8的立方根值2.0
2的2次方值4.0
在具体的问题中,取整数操作使用也很普通,所以java在Math类仲添加了数字取整方法。
//返回第一个大于等于参数的参数的整数
System.out.println("使用ceil()方法取整:"+Math.ceil(5.2));
//返回第一个小于等于参数的整数
System.out.println("使用floor()方法取整"+Math.floor(2.5));
//返回与参数最接近的整数
System.out.println("使用rint()方法取整"+Math.rint(2.7));
//将参数上加0.5后返回最近接近的整数
System.out.println("使用round()方法取整"+Math.round(2.5));
}
}
使用floor()方法取整2.0
使用rint()方法取整3.0
使用round()方法取整3
System.out.println("4和8较大者"+Math.max(4,8));
System.out.println("4和4.4较小者"+Math.min(4, 4.4));
System.out.println("-7的绝对值:"+Math.abs(-7));//取参数的绝对值
}
4和4.4较小者4.0
-7的绝对值:7
public static int GetEvenNum(double num1,double num2){
int s=(int)num1+(int)(Math.random()*(num2-num1));
if(s%2==0){
return s;
}else{
return s+1;
}
}
public static void main(String[] args) {
System.out.println("任意一个2-32之间的偶数:"+GetEvenNum(2,32));
}