java快速入门笔记整理:7、java数据类型:浮点型(float、double)、浮点数运算、java中的科学计算法

目录

一、浮点型简单介绍

二、代码演示说明


一、浮点型简单介绍

二、代码演示说明

package t07_浮点类型_float_double;

/**
 * 浮点数类型:float类型、double类型 ( 详细资料参考:IEEE-754标准 )
 * 就是Java中的小数(是2进制小数)
 * 1)精度(精确度)问题 
 *    double 64位,后缀 D或d
 *    float  32位,后缀 F或f
 *    double的精度是float的两倍
 *    double 是常用浮点类型。一般只使用double计算浮点数
 * 2)默认小数类型的字面量是:double类型(精度考虑)
 * 3)计算误差,有舍入误差现象,浮点数不能进行精确计算
 * 
 */
public class TestFloatDouble {
	public static void main(String[] args) {
		
//		testFloat();//测试 float类型
//		testDouble();//测试 double类型
//		testOperation();//测试 浮点数运算
		testScientificCounting();//测试 科学计数法
		
	}
	
	/**
	 * 科学计数法
	 * 科学记数法是一种记数的方法。
	 * 把一个数表示成a与10的n次幂相乘的形式(1≤|a|<10,n为整数),这种记数法叫做科学记数法。 
	 * 科学记数法的形式是由两个数的乘积组成的。表示为a×10^b(aEb)
	 * 例如:19971400000000=1.99714×10^13。
	 * 计算器或电脑表达10的幂是一般是用E或e,也就是1.99714E13=19971400000000。
	 * 
	 * 作用用途:
	 * 当我们要标记或运算某个较大或较小且位数较多时,用科学记数法免去浪费很多空间和时间。
	 * 
	 * 百度百科地址:
	 * https://baike.baidu.com/item/科学记数法/1612882?fromtitle=科学计数法&fromid=756685&fr=aladdin#reference-[2]-793477-wrap
	 */
	private static void testScientificCounting() {
		
		//pow方法:计算java中的次方
		System.out.println(10*10 == Math.pow(10, 2));//true
		System.out.println(0.01 == Math.pow(10, -2));//true
		
		System.out.println(1E2 == Math.pow(10, 2));//true
		System.out.println(1E-2 == Math.pow(10, -2));//true

		
		double pi;
		pi = 3.1415926535897932384626433832D;//double类型
		
		double c = Math.sin(pi);
		System.out.println(c);//1.2246467991473532E-16
		
		//1.2246467991473532E-16 为科学计数法,它等于如下输出:
		System.out.println(1.2246467991473532*Math.pow(10, -16));//1.2246467991473532E-16
		System.out.println(0.12246467991473532*Math.pow(10, -15));//1.2246467991473532E-16
		
		System.out.println(c>0);//true
		
		
		//在百度百科的一组公式
		/*
		n"E"公式 
		3E4E5=30000E5=3E9
		即aEbEc=aEb+c
		6E-3E-6E3=0.006E-6E3
		=0.000000006E3
		=6E-6
		*/
		//科学计算法--->相关转换
		System.out.println(0.000000006E3 == 6E-6);//true
		System.out.println(0.000000006*10*10*10 == 6E-6);//true
		System.out.println(0.000000006*Math.pow(10, 3) == 6E-6);//true
		System.out.println(0.000006 == 6E-6);//true
		System.out.println(0.000006 == 6*Math.pow(10, -6));//true
		
		
	}


	/**
	 * 浮点数运算
	 * 计算误差,有舍入误差现象,浮点数不能进行精确计算
	 */
	private static void testOperation() {
		double pi;
		
		pi = 3.1415926535897932384626433832D;//double类型
		
		//计算误差,有舍入误差现象,不能进行精确计算
		double d = 2.6;
		System.out.println(d - 2);//0.6000000000000001
		d = 3.0;
		System.out.println(d - 2.9);//0.10000000000000009
		
		double c = Math.sin(pi);
		System.out.println(c==0);//false
		
		//不精确的0
		System.out.println(c);//1.2246467991473532E-16
		
		//1.2246467991473532E-16 为科学计数法
		//它等于 1.2246467991473532乘以10的负16次方
		//写的明白点,也就是:0.12246467991473532乘以10的负15次方
		//所以下面的比较为 true
		System.out.println(c>0);//true
		
		//判断c接近于0
		System.out.println(c<0.0000000001);//true
		
	}

	
	/**
	 * double类型
	 */
	private static void testDouble() {
		double pi;
		float f;
		
		//double类型
		pi = 3.14D;
		System.out.println(pi);//3.14
		pi = 3.1415926D;
		System.out.println(pi);//3.1415926
		pi = 3.1415926535897932384626433832D;
		System.out.println(pi);//3.141 5926 5358 9793
		
		//float类型--->自动转 double类型
		//因为默认小数类型的字面量是 double类型
		//float--->double: 小类型到大类型,可以完成自动转换。
		pi = 3.1415926535897932384626433832f;
		System.out.println(pi);//3.141 5927 4101 2573 2
		pi = 3.1415926535897932384626433832F;
		System.out.println(pi);//3.141 5927 4101 2573 2
		
		pi = 3.14f;
		System.out.println(pi);//3.140 0001 0490 4175
		pi = 3.14F;
		System.out.println(pi);//3.140 0001 0490 4175
		
		pi = 3.1415926f;
		System.out.println(pi);//3.141 5925 0259 3994
		pi = 3.1415926F;
		System.out.println(pi);//3.141 5925 0259 3994
		
	}

	
	/**
	 * float类型
	 */
	private static void testFloat() {
		float f;
		
		//编译错误。因为默认小数类型的字面量是 double类型
		//没有加F或f,说明默认为double类型
		//double--->float: 大类型到小类型,需进行强制转换
		//f = 3.1415926535897932384626433832;
		f = (float)3.1415926535897932384626433832;
		System.out.println(f);//3.1415927
		
		f = 3.1415926535897932384626433832f;
		System.out.println(f);//3.1415927
		f = 3.1415926535897932384626433832F;//后缀 F或f 都可以
		System.out.println(f);//3.1415927
		
		
		//valueOf(float f)
		//float ff2 = Float.valueOf(2455.4941);//编译错误,因为默认小数类型的字面量是 double类型
		float ff2 = Float.valueOf(2455.4941f);
		System.out.println(ff2);//2455.4941
		
		
		//f = 3.14;//编译错误
		f = (float) 3.14;
		System.out.println(f);//3.14
		f = 3.14f;
		System.out.println(f);//3.14
		
		f = (float) 3.1415926;
		System.out.println(f);//3.1415925
		f = 3.1415926f;
		System.out.println(f);//3.1415925
		
		f = (float) 3.141592;
		System.out.println(f);//3.141592
		f = 3.141592f;
		System.out.println(f);//3.141592
		
	}
	
	
}


原创文章 365 获赞 60 访问量 18万+

猜你喜欢

转载自blog.csdn.net/YuDBL/article/details/105794909
今日推荐