在Java中没有格式化的数据遵循以下原则:
Java主要对浮点型数据进行数字格式化操作,其中浮点型数据包括double型和float型数据,在Java中使用java.text.DecimalFormat格式化数字,这里着重讲DecimalFormat类。
一般情况下可以在实例化DecimalFormat对象时传递数字格式,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。
import java.text.DecimalFormat;
public class DecimalFormatSimpleDemo {
//使用实例化对象时设置格式化模式
static public void SimgleFormat(String pattern, double value) {
DecimalFormat myFormat = new DecimalFormat(pattern); //实例化DecimalFormat对象
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) {
SimgleFormat("###,###.###", 123456.789);
SimgleFormat("00000000.###kg", 123456.789);
SimgleFormat("000000.000", 123.789);
UseApplyPatternMethodFormat("#.###%", 0.789);
UseApplyPatternMethodFormat("##.###", 123456.789);
UseApplyPatternMethodFormat("0.00\u2030", 0.789);
}
}
结果:
123456.789 ###,###.### 123,456.789
123456.789 00000000.###kg 00123456.789kg
123.789 000000.000 000123.789
0.789 #.###% 78.9%
123456.789 ##.### 123456.789
0.789 0.00‰ 789.00‰
Math.数学方法
Math.PI
Math.E
Java中主要提供两种产生随机数的方式,分别为调用Math类的random()方法和Random类提供的产生各种数据类型随机数方法。
默认生成>=0.0且<1.0的double型随机数,即0<=Math.random()<1.0
例:在类中编写GetRandomChar()方法产生随机字符,并在主方法中输出该字符。
public class MathRandomChar{
//定义获取任意字符之间的随机字符
public static char GetRandomChar(char cha1, char cha2){
return (char) (cha1 + Math.random()*(cha2-cha1+1));
}
public static void main(String[] args) {
//获取a~z之间的随机字符
System.out.println("任意小写字符"+GetRandomChar('a','z'));
//获取A~Z之间的随机字符
System.out.println("任意大写字符"+GetRandomChar('A','Z'));
//获取0~9之间的随机字符
System.out.println("0~9任意数字字符"+GetRandomChar('0','9'));
}
}
java.util.Random类,可以通过实例化一个Random对象创建一个随机数生成器。
也可以在实例化Random类对象时,设置随机数生成器种子:
Random r = new Random(seedValue);
**seed:**随机生成器的种子
在Random类中提供了获取各种数据类型随机数的方法,如:
在上述方法中,BigDecimal类中divide()方法有多种设置,用于返回商末位小数点的处理,这些模式的名称与含义如下表:
import java.math.BigDecimal;
public class BigDecimalDemo{
static final int location=10;
/**
* 定义加法方法,参数为加数与被加数
*
* @param value1
* 相加的第一个数
*@param value2
* 相加的第二个数
*@return 两数之和
*/
public BigDecimal add(double value1, double value2){
//实例化Dcimal对象
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.add(b2);//调用加法方法
}
/**
* 定义减法方法,参数为减数与被减数
*
* @param value1
* 被减数
*@param value2
* 减数
*@return 运算结果
*/
public BigDecimal sub(double value1, double value2){
//实例化Dcimal对象
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.subtract(b2);//调用减法方法
}
/**
* 定义除法方法,参数为除数与被除数
*
* @param value1
* 被除数
*@param value2
* 除数
*@return 运算结果
*/
public BigDecimal div(double value1, double value2){
return div(value1, value2, location);//调用自定义除法方法
}
//定义除法方法,参数分别为除数与被除数以及商小数点后的位数
public BigDecimal div(double value1, double value2, int b){
//实例化Dcimal对象
if(b<0){
System.out.println("b must bigger than 0");
}
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
//调用除法方法,商小数点后保留b位,并将结果进行四舍五入操作
return b1.divide(b2, b, BigDecimal.ROUND_HALF_UP);
}
public static void main(String[] args){
BigDecimalDemo b = new BigDecimalDemo();
System.out.println("两个数字相加结果:"+b.add(-7.5, 8.9));
System.out.println("两个数字相减结果:"+b.sub(-7.5, 8.9));
System.out.println("两个数字相除结果,小数后保留10位:"+b.div(-7.5, 8.9));
System.out.println("两个数字相除结果,小数后保留5位:"+b.div(-7.5, 8.9, 5));
}
}
两个数字相加结果:1.4
两个数字相减结果:-16.4
两个数字相除结果,小数后保留10位:-0.8426966292
两个数字相除结果,小数后保留5位:-0.84270