java学习笔记8_数据类型

package coreJava;

import java.math.BigDecimal;
import java.text.NumberFormat;

/**
 * java强(为每一个变量声明一种类型,int i=0)类型语言,js,groovy弱类型语言(var str="js"; def str="groovy");
 * java 8种 基本数据类型(4种整型((byte,short,int, long));2种浮点;1种char;1种boolean) 
 */
public class Chapter3 {

	public static void main(String[] args) {
		
		// byte 和short 用于特殊场合
		// java语言,int类型与运行java代码的机器无关;而C/C++中,int表示的整型与目标机器相关
		// char类型与unicode编码 http://blog.sina.com.cn/s/blog_44c1e6da0100bhqc.html
		
		// 浮点类型:float 单精度(有效位数为6-7位;4字节);double双精度(有效位数为15位;8字节) 		
		System.out.println((float)1/3);
		System.out.println((double)1/3);
		
		System.out.println(1/3f);
		System.out.println(1.0/3.0); // 没有后缀f的浮点数默认为double
		System.out.println(1/3d);
		System.out.println(1/3); 
		
		// 特殊(溢出或出错)浮点数:正无穷大Double.POSITIVE_INFINITY,负无穷大Double.NEGITIVE_INFINITY,Double.isNaN
		System.out.println("is NaN? " + (Double.isNaN('a')? true:false));
		
		//浮点数数值不适合用于禁止出现舍入误差的金融计算中,无舍入误差采用BigDecimal
		//为什么"减不尽"? http://www.cnblogs.com/yewsky/articles/1864934.html
		System.out.println(2.0 - 1.1); // 浮点数采用二进制系统,无法精确1/10; 10进制系统无法精确表示1/3		
		System.out.println(new BigDecimal(2.0).subtract(new BigDecimal(1.1)).doubleValue()); // 0.8999999999999999
		//注意需要使用BigDecimal(String val)构造方法  
		System.out.println(new BigDecimal(Double.toString(2.0)).subtract(new BigDecimal(Double.toString(1.1)))); // 0.9
	
	    // 数字格式化  NumberFormat.getCurrencyInstance(); 
		double format = 12343171.6; 

		//获取常规数值格式 
		NumberFormat number = NumberFormat.getNumberInstance(); 
		String str = number.format(format);//12,343,171.6
		System.out.println(str);

		//获取整数数值格式 
		NumberFormat integer = NumberFormat.getIntegerInstance(); 
		str = integer.format(format);//如果带小数会四舍五入到整数12,343,172 
		System.out.println(str);
		
		//获取货币数值格式 
		NumberFormat currency = NumberFormat.getCurrencyInstance(); 
		currency.setMinimumFractionDigits(2);//设置数的小数部分所允许的最小位数(如果不足后面补0) 
		currency.setMaximumFractionDigits(4);//设置数的小数部分所允许的最大位数(如果超过会四舍五入) 
		str = currency.format(format);//¥12,343,171.60 
		System.out.println(str);
		
		//获取显示百分比的格式 
		NumberFormat percent = NumberFormat.getPercentInstance(); 
		percent.setMinimumFractionDigits(2);//设置数的小数部分所允许的最小位数(如果不足后面补0) 
		percent.setMaximumFractionDigits(3);//设置数的小数部分所允许的最大位数(如果超过会四舍五入) 
		str = percent.format(format);//1,234,317,160.00%
		System.out.println(str);
	}

}

你可能感兴趣的:(java学习笔记8_数据类型)