精华内容
下载资源
问答
  • 在IEEE754标准下探讨short,int ,long,float取值范围,文档中包含一段验证程序,在VC6.0环境下编译通过,全面展示short,int ,long,float取值范围,以及double取值范围的推广。
  • 下表列出了各种数值类型以及它们的允许范围和占用的内存空间。类型大小范围(有符号)范围(无符号)用途TINYINT1字节-128~1270~255小整数值SMALLINT2字节-32768~327670~65535大整数值MEDIUMINT3字节-8388608~83886070~...

    下表列出了各种数值类型以及它们的允许范围和占用的内存空间。

    类型

    大小

    范围(有符号)

    范围(无符号)

    用途

    TINYINT

    1字节

    -128~127

    0~255

    小整数值

    SMALLINT

    2字节

    -32768~32767

    0~65535

    大整数值

    MEDIUMINT

    3字节

    -8388608~8388607

    0~16777215

    大整数值

    INT或INTEGER

    4字节

    -2147483648~2147483647

    0~4294967295

    大整数值

    BIGINT

    8字节

    -9223372036854775808~9223372036854775807

    0~18446744073709551615

    极大整数值

    FLOAT

    4字节

    -3.402823466E+38~1.175494351E-38,0,1.175494351E-38~ 3.402823466E+38

    0,1.175494351E-38~3.402823466E+38

    单精度

    浮点数值

    DOUBLE

    8字节

    -1.7976931348623157E+308~

    2.2250738585072014E-308,

    0,2.2250738585072014E-308

    ~1.7976931348623157E+308

    0,2.2250738585072014E-308~1.7976931348623157E+308

    双精度

    浮点数值

    DECIMAL

    DECIMAL

    (M,D)

    如果M>D

    为M+2

    否则为D+2

    依赖于M和D的值

    依赖于M和D的值

    小数值

    INT 类型  在MySQL 中支持的 5 个主要整数类型是 TINYINT,SMALLINT,MEDIUMINT,INT和 BIGINT。这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的。

    MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。例如,指定一个字段的类型为 INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。

    万一我们需要对一个字段存储一个超出许可范围的数字,MySQL 会根据允许范围最接近它的一端截短后再进行存储。还有一个比较特别的地方是,MySQL 会在不合规定的值插入表前自动修改为 0。

    UNSIGNED 修饰符规定字段只保存正值。因为不需要保存数字的正、负符号,可以在储时节约一个“位”的空间。从而增大这个字段可以存储的值的范围。

    ZEROFILL 修饰符规定 0(不是空格)可以用来真补输出的值。使用这个修饰符可以阻止 MySQL 数据库存储负值。

    FLOAT、DOUBLE 和 DECIMAL类型

    MySQL 支持的三个浮点类型是 FLOAT、DOUBLE 和 DECIMAL 类型。FLOAT数值类型用于表示单精度浮点数值,而 DOUBLE 数值类型用于表示双精度浮点数值。

    与整数一样,这些类型也带有附加参数:一个显示宽度指示器和一个小数点指示器。比如语句 FLOAT(7,3) 规定显示的值不会超过 7 位数字,小数点后面带有 3 位数字。

    对于小数点后面的位数超过允许范围的值,MySQL 会自动将它四舍五入为最接近它的值,再插入它。

    DECIMAL 数据类型用于精度要求非常高的计算中,这种类型允许指定数值的精度和计数方法作为选择参数。精度在这里指为这个值保存的有效数字的总个数,而计数方法表示小数点后数字的位数。比如语句 DECIMAL(7,3) 规定了存储的值不会超过 7 位数字,并且小数点后不超过 3 位。

    忽略 DECIMAL 数据类型的精度和计数方法修饰符将会使MySQL 数据库把所有标识为这个数据类型的字段精度设置为 10,计算方法设置为 0。

    UNSIGNED 和 ZEROFILL 修饰符也可以被 FLOAT、DOUBLE 和DECIMAL 数据类型使用。并且效果与 INT 数据类型相同。

    字符串类型MySQL 提供了 8 个基本的字符串类型,可以存储的范围从简单的一个字符到巨大的文本块或二进制字符串数据。

    类型

    大小

    用途

    CHAR

    0~255字节

    定长字符串

    VARCHAR

    0~255字节

    变长字符串

    TINYBLOB

    0~255字节

    不超过255个字符的二进制字符串

    TINYTEXT

    0~255字节

    短文本字符串

    BLOB

    0~65535字节

    二进制形式的长文本数据

    TEXT

    0~65535字节

    长文本数据

    MEDIUMBLOB

    0~16777215字节

    二进制形式的中等长度文本数据

    MEDIUMTEXT

    0~16777215字节

    中等长度文本数据

    LOGNGBLOB

    0~4294967295字节

    二进制形式的极大文本数据

    LONGTEXT

    0~4294967295字节

    极大文本数据

    CHAR 和 VARCHAR 类型

    CHAR 类型用于定长字符串,并且必须在圆括号内用一个大小修饰符来定义。这个大小修饰符的范围从 0-255。比指定长度大的值将被截短,而比指定长度小的值将会用空格作填补。

    CHAR 类型可以使用 BINARY 修饰符。当用于比较运算时,这个修饰符使 CHAR 以二进制方式参于运算,而不是以传统的区分大小写的方式。

    CHAR 类型的一个变体是 VARCHAR 类型。它是一种可变长度的字符串类型,并且也必须带有一个范围在 0-255 之间的指示器。CHAR 和VARCHGAR 不同之处在于 MuSQL 数据库处理这个指示器的方式:CHAR 把这个大小视为值的大小,不长度不足的情况下就用空格补足。而 VARCHAR 类型把它视为最大值并且只使用存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)来存储值。所以短于指示器长度的 VARCHAR 类型不会被空格填补,但长于指示器的值仍然会被截短。

    因为 VARCHAR 类型可以根据实际内容动态改变存储值的长度,所以在不能确定字段需要多少字符时使用 VARCHAR 类型可以大大地节约磁盘空间、提高存储效率。

    VARCHAR 类型在使用 BINARY 修饰符时与 CHAR 类型完全相同。

    TEXT 和 BLOB 类型  对于字段长度要求超过 255 个的情况下,MySQL提供了 TEXT 和 BLOB 两种类型。根据存储数据的大小,它们都有不同的子类型。这些大型的数据用于存储文本块或图像、声音文件等二进制数据类型。

    TEXT 和 BLOB 类型在分类和比较上存在区别。BLOB 类型区分大小写,而 TEXT 不区分大小写。大小修饰符不用于各种 BLOB 和 TEXT 子类型。比指定类型支持的最大范围大的值将被自动截短。

    日期和时间类型

    在处理日期和时间类型的值时,MySQL 带有 5 个不同的数据类型可供选择。它们可以被分成简单的日期、时间类型,和混合日期、时间类型。根据要求的精度,子类型在每个分类型中都可以使用,并且 MySQL 带有内置功能可以把多样化的输入格式变为一个标准格式。

    类型

    大小(字节)

    范围

    格式

    用途

    DATE

    3

    1000-01-01~9999-12-31

    YYYY-MM-DD

    日期值

    TIME

    3

    -838:59:59~838:59:59

    HH:MM:SS

    时间值或持续时间

    YEAR

    1

    1901/2155

    YYYY

    年份值

    DATETIME

    8

    1000-01-01 00:00:00~9999-12-31 23:59:59

    YYYY-MM-DD HH:MM:SS

    日期和时间值

    TIMESTAMP

    8

    1970-01-01 00:00:00~2037年某时

    YYYYMMDD HHMMSS

    混合日期和时间值,时间戳

    DATE、TIME 和 TEAR 类型  MySQL用 DATE 和 TEAR 类型存储简单的日期值,使用 TIME 类型存储时间值。这些类型可以描述为字符串或不带分隔符的整数序列。如果描述为字符串,DATE 类型的值应该使用连字号作为分隔符分开,而 TIME 类型的值应该使用冒号作为分隔符分开。

    需要注意的是,没有冒号分隔符的 TIME 类型值,将会被MySQL 理解为持续的时间,而不是时间戳。

    MySQL 还对日期的年份中的两个数字的值,或是 SQL 语句中为 TEAR 类型输入的两个数字进行最大限度的通译。因为所有 TEAR 类型的值必须用 4 个数字存储。MySQL 试图将 2个数字的年份转换为 4 个数字的值。把在 00-69 范围内的值转换到 2000-2069 范围内。把 70-99 范围内的值转换到 1970-1979 之内。如果 MySQL 自动转换后的值并不符合我们的需要,请输入 4 个数字表示的年份。

    DATEYIME 和 TIMESTAMP 类型   除了日期和时间数据类型,MySQL 还支持DATEYIME 和 TIMESTAMP 这两种混合类型。它们可以把日期和时间作为单个的值进行存储。这两种类型通常用于自动存储包含当前日期和时间的时间戳,并可在需要执行大量数据库事务和需要建立一个调试和审查用途的审计跟踪的应用程序中发挥良好作用。

    如果我们对 TIMESTAMP 类型的字段没有明确赋值,或是被赋与了 null 值。MySQL 会自动使用系统当前的日期和时间来填充它。

    复合类型

    MySQL 还支持两种复合数据类型 ENUM 和 SET,它们扩展了 SQL 规范。虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型。一个 ENUM 类型只允许从一个集合中取得一个值;而 SET 类型允许从一个集合中取得任意多个值。

    ENUM 类型  ENUM 类型因为只允许在集合中取得一个值,有点类似于单选项。在处理相互排拆的数据时容易让人理解,比如人类的性别。ENUM 类型字段可以从集合中取得一个值或使用 null 值,除此之外的输入将会使 MySQL 在这个字段中插入一个空字符串。另外如果插入值的大小写与集合中值的大小写不匹配,MySQL 会自动使用插入值的大小写转换成与集合中大小写一致的值。

    ENUM 类型在系统内部可以存储为数字,并且从1 开始用数字做索引。一个 ENUM 类型最多可以包含65536 个元素,其中一个元素被 MySQL 保留,用来存储错误信息,这个错误值用索引 0 或者一个空字符串表示。

    MySQL 认为 ENUM 类型集合中出现的值是合法输入,除此之外其它任何输入都将失败。这说明通过搜索包含空字符串或对应数字索引为 0 的行就可以很容易地找到错误记录的位置。

    SET 类型

    SET 类型与 ENUM 类型相似但不相同。SET 类型可以从预定义的集合中取得任意数量的值。并且与 ENUM 类型相同的是任何试图在 SET 类型字段中插入非预定义的值都会使 MySQL 插入一个空字符串。如果插入一个即有合法的元素又有非法的元素的记录,MySQL 将会保留合法的元素,除去非法的元素。

    一个 SET 类型最多可以包含 64 项元素。在 SET 元素中值被存储为一个分离的“位”序列,这些“位”表示与它相对应的元素。“位”是创建有序元素集合的一种简单而有效的方式。并且它还去除了重复的元素,所以 SET 类型中不可能包含两个相同的元素。

    注:decimal(M,D) 中 M 代表数据总的位数(不包含小数点),D 代表小数点后面的位数。例如:decimal(5,2) 的最大值为 999.99;decimal(6,0) 最大值为 999999。

    展开全文
  • ...是ture,不适用范围:不适用于检测可为0的参数。...SQL标准允许在关键字FLOAT后面的括号内选择用位指定精度(但不能为指数范围)。MySQL还支持可选的只用于确定存储大小的精度规定。0到23的精度对应FLOAT列的4...

    58e8d81c4a0d115f2a9f9f245fa77d87.png

    ...是ture,不适用范围:不适用于检测可为0的参数。 is_numeric();——只适用于检测数字,但假如参数名不存在,会出错,因此不适合于第一层检测。 综合示例: 复制代码 代码如下:

    FLOAT类型用于表示近似数值数据类型。SQL标准允许在关键字FLOAT后面的括号内选择用位指定精度(但不能为指数范围)。MySQL还支持可选的只用于确定存储大小的精度规定。0到23的精度对应FLOAT列的4字节单精度。24到53的精度对应DOUBLE列的8字节双精度。

    单精度浮点数用4字节(32bit)表示浮点数

    采用IEEE754标准的计算机浮点数,在内部是用二进制表示的

    如:7.22用32位二进制是表示不下的。

    所以就不精确了。

    mysql中float数据类型的问题总结

    对于浮点列类型,在MySQL中单精度值使用4个字节,双精度值使用8个字节。

    FLOAT类型用于表示近似数值数据类型。SQL标准允许在关键字FLOAT后面的括号内选择用位指定精度(但不能为指数范围)。MySQL还支持可选的只用于确定存储大小的精度规定。0到23的精度对应FLOAT列的4字节单精度。24到53的精度对应DOUBLE列的8字节双精度。

    MySQL允许使用非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。这里,“(M,D)”表示该值一共显示M位整数,其中D位位于小数点后面。例如,定义为FLOAT(7,4)的一个列可以显示为-999.9999。MySQL保存值时进行四舍五入,因此如果在FLOAT(7,4)列内插入999.00009,近似结果是999.0001。

    MySQL将DOUBLE视为DOUBLE PRECISION(非标准扩展)的同义词。MySQL还将REAL视为DOUBLE PRECISION(非标准扩展)的同义词,除非SQL服务器模式包括REAL_AS_FLOAT选项。

    为了保证最大可能的可移植性,需要使用近似数值数据值存储的代码应使用FLOAT或DOUBLE PRECISION,不规定精度或位数。

    DECIMAL和NUMERIC类型在MySQL中视为相同的类型。它们用于保存必须为确切精度的值,例如货币数据。当声明该类型的列时,可以(并且通常要)指定精度和标度;例如:

    salary DECIMAL(5,2)

    在该例子中,5是精度,2是标度。精度表示保存值的主要位数,标度表示小数点后面可以保存的位数。

    在MySQL 5.1中以二进制格式保存DECIMAL和NUMERIC值。

    标准SQL要求salary列能够用5位整数位和两位小数保存任何值。因此,在这种情况下可以保存在salary列的值的范围是从-999.99到999.99。

    在标准SQL中,语法DECIMAL(M)等价于DECIMAL(M,0)。同样,语法DECIMAL等价于DECIMAL(M,0),可以通过计算确定M的值。在MySQL 5.1中支持DECIMAL和NUMERIC数据类型的变量形式。M默认值是10。

    DECIMAL或NUMERIC的最大位数是65,但具体的DECIMAL或NUMERIC列的实际范围受具体列的精度或标度约束。如果此类列分配的值小数点后面的位数超过指定的标度允许的范围,值被转换为该标度。(具体操作与操作系统有关,但一般结果均被截取到允许的位数)。

    二、mysql 和 oracle中的数值类型

    问题是不是只有 mysql 存在呢?显然不是,只要是符合IEEE754标准的浮点数实现,都存在相同的问题。

    mysql中的数值类型(不包括整型):

    IEEE754浮点数:float(单精度),double或real(双精度)

    定点数:decimal或numeric

    oracle中的数值类型:

    oracle 浮点数 :number(注意不指定精度)

    IEEE754浮点数:BINARY_FLOAT(单精度),BINARY_DOUBLE(双精度)FLOAT,FLOAT(n) (ansi要求的数据类型)

    定点数:number(p,s)

    如果在oracle中,用BINARY_FLOAT等来做测试,结果是一样的。因此,在数据库中,对于涉及货币或其他精度敏感的数据,应使用定点数来存储,对mysql来说是 decimal,对oracle来说就是number(p,s)。双精度浮点数,对于比较大的数据同样存在问题!

    三、编程中也存在浮点数问题

    不光数据库中存在浮点数问题,编程中也同样存在,甚至可以说更值得引起注意!

    通过上面的介绍,浮点数的误差问题应该比较清楚了。如果在程序中做复杂的浮点数运算,误差还会进一步放大。因此,在程序设计中,如果用到浮点数,一定要意识到可能产生的误差问题。不仅如此,浮点数如果处理不好,还会导致程序BUG!看下面的语句:if (x != y) { z = 1 / (x -y);}这个语句看起来没有问题,但如果是浮点数,就可能存在问题!再看下面的语句会输出什么结果: public class Test { public static void main(String[]args) throws Exception { System.out.print("7.22-7.0=" + (7.22f-7.0f)); } } 我们可能会想当然地认为输出结果应该是 0.22 ,实际结果却是 0.21999979 !

    因此,在编程中应尽量避免做浮点数的比较,否则可能会导致一些潜在的问题!除了这些,还应注意浮点数中的一些特殊值,如 NaN、+0、-0、+无穷、-无穷等,IEEE754虽然对此做了一些约定,但各具体实现、不同的硬件结构,也会有一些差异,如果不注意也会造成错误!四、总结:

    从上面的分析,我们可以得出以下结论:

    1、浮点数存在误差问题;

    2、对货币等对精度敏感的数据,应该用定点数表示或存储;

    3、编程中,如果用到浮点数,要特别注意误差问题,并尽量避免做浮点数比较;

    4、要注意浮点数中一些特殊值的处理。

    实例

    为了能够引起大家的重视,在介绍浮点数与定点数以前先让大家看一个例子:

    代码如下

    复制代码

    mysql> CREATE TABLE test (c1 float(10,2),c2 decimal(10,2));

    Query OK, 0 rows affected (0.29 sec)

    mysql> insert into test values(131072.32,131072.32);

    Query OK, 1 row affected (0.07 sec)

    mysql> select * from test;

    +-----------+-----------+

    | c1| c2|

    +-----------+-----------+

    | 131072.31 | 131072.32 |

    +-----------+-----------+

    1 row in set (0.00 sec)

    从上面的例子中我们看到c1列的值由131072.32变成了131072.31,这就是浮点数的不精确性造成的。

    在mysql中float、double(或real)是浮点数,decimal(或numberic)是定点数。

    浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的数据范围;

    它的缺点是会引起精度问题。

    Float类型和double类型的区别

    FLOAT[(M,D)] [ZEROFILL]

    一个小(单精密)浮点数字。不能无符号。允许的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。M是显示宽度而D是小数的位数。没有参数的FLOAT或有 <24 的一个参数表示一个单精密浮点数字。

    DOUBLE[(M,D)] [ZEROFILL]

    一个正常大小(双精密)浮点数字。不能无符号。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。M是显示宽度而D是小数位数。没有一个参数的DOUBLE或FLOAT(X)(25 < = X < = 53)代表一个双精密浮点数字。

    ...是ture,不适用范围:不适用于检测可为0的参数。 is_numeric();——只适用于检测数字,但假如参数名不存在,会出错,因此不适合于第一层检测。 综合示例: 复制代码 代码如下:

    ...if (!$dateTimeString) { $dateTimeString = time(); } $numeric = ''; $add_space = false; for($i=0;$i

    本文介绍php出现Warning: A non-numeric value encountered问题,用实例分析出现这种错误的原因,并提供避免及解决问题的方法。 <?phperror_reporting (E_ALL);

    ini_set('display_errors',

    bitsCN.com

    关于mysql数据库的数据类型numeric和decimal decimal(numeric ) 同义,用于精确存储数值decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边。decimal 数据类型存储了一个准确(精确)的数...

    declare @tmpt table(a int,b numeric(20,3),c numeric(20,3)) insert into @tmpt EXECUTE cbdbfxt 2005,5,'670,' select * from @tmpt drop table #tmpt create

    is_numeric:检测是否为数字字符串,可为负数和小数 ctype_digit:检测字符串中的字符是否都是数字,负数和小数会检测不通过 注意,参数一定要是字符串,如果不是字符串,则会返回0/FASLE 下面是测试例子: ...

    ...re,不适用范围:不适用于检测可为0的参数。is_numeric();——只适用于检测数字,但假如参数名不存在,会出错,因此不适合于第一层检测。 综合示例: <?php ini_set("display_errors",1); //ini_set(...

    ...r>echo "0 is null;"; }else{ echo "0 is not null;"; } if(is_numeric($a)){ echo "0 is numeric;"; }else{ echo "0 is not numeric;"; } if(is_string($a))

    ...int类型的数字的时候return 1,否则return 0is_numeric:是数字/数字字符串(要是纯的数字字符串,有字符就返回false),return 1example:is_numeric(1234);//trueis_nu...

    ...ts,name,'.$id.',id',

    'mobile' => 'required|numeric|min:10|max:10',

    'dist_name' => 'req

    展开全文
  • Java中有8种数据类型来存储数值、字符、布尔值。本篇讲说数值类型①整数类型整数类型用来存储...byte(字节),内存占1字节、长度为8,取值范围:-128~127short (短整型),内存占2字节、长度16位,取值范围:-32768~32...
    Java中有8种数据类型来存储数值、字符、布尔值。本篇讲说数值类型①整数类型整数类型用来存储整数数值,可以是整数,也可以是负数。其中,按数据在内存中所占大小的不同,可分为byte、short、int和long 4种类型,它们具有不同的取值范围。byte(字节),内存占1字节、长度为8,取值范围:-128~127short (短整型),内存占2字节、长度16位,取值范围:-32768~32767int (整型),内存占4字节、长度32位,取值范围:-2147483648~2147483647long (长整型),内存占8字节、长度64位,取值范围:-9223372036854775808~9223372036854775807②浮点类型浮点类型,即有小数部分的数字。Java中的浮点类型分为单精度类型float和双精度类型double,float,内存4字节,长度32位,取值范围:1.4E-45~4.4028235E38dobule,内存8字节、长度64位,取值范围:4.9E-324~1.7976931348623157E308在默认情况下小数都被看作dobule类型,若想使用float类型声明小数,需要再小数后面添加F或f。另外,如果使用后缀d或D来明确这是double类型数据,但加不加d或D,没有硬性规定,而声明float类型如果不加f或F,系统会认为是double类型而出错。

    3a93bfb1ce0a0972c0da2d986dede4b5.png

    展开全文
  • 说明要强制转为哪种类型 (要转换的类型)数值​ 取值范围: byte-->short-->int-->long-->float-->double char 示例代码: public class Test7Convert { public static void main(String[] args) { /* Java这门语言,...

    提纲:

    1、数据类型的分类2、8种基本数据类型3、数据类型的转换

    上节课回顾

    1、第一个程序:重点

    A:程序的结构,B:java程序的执行过程:编写源代码,编译器进行编译:javac,解释器执行:java

    //HelloWorld.javapublic class HelloWorld{  public static void main(String[] args){//JVM执行程序的入口    System.out.println("Hello World...");  }}class A{}class B{}

    2、类的阐述:知道

      A:同一个源文件中可以定义多个类。​  B:编译后,每个类都会生成独立的.class文件,文件的名字和类名是一致的。​  C:一个类中,只能有一个主函数,每个类都可以有自己的主函数。​  D:public修饰的类,称为公开类,要求类名必须和文件的名字一致。​  E:一个源文件中,只能有一个公开类。


    3、包,package:了解

    作用:类似于文件夹,用于管理和区分字节码文件。​  语法:package 包名;​  位置:必须写在源文件的第一行。​  带包编译:javac -d . 源文件名.java (自动生成目录结构)​  带包运行:java 包名.类名​  包名:所有的字母都小写,采用域名倒置的规则  

    4、编码规范

    A:书写格式:​    层级之间的缩进,tab键,一个制表符​    一行只能有一句代码​    每行语句使用;分号结束​  B:注释​    单行注释://​    多行注释:/*....*/​    文档注释:/**....*/​  C:标识符命名:(掌握)​    标识符:在写程序的时候,对类,包,变量,方法等等命名。​    语法要求:​      1、组成:字母,数字,_,$​      2、数字不能开头​      3、区分大小写​      4、不能是java中的保留字和关键字。public static void class int​    约定俗成:​      1、见名知意,英文单词​      2、类的名字,首字母大写​      3、变量名,方法名等,驼峰式命名,studentName​      4、包名,全部字母都是小写​      5、常量名,所有的字母都大写。​

    5、变量

    概念:内存中的一小块空间。用于存储数据。程序执行过程中,数值可以改变。​  三要素:数据类型,变量名,值​  语法:​    定义变量:数据类型 变量名​    赋值变量:变量名 = 数值;​

    一、数据类型的分类

    Java中的数据类型:基本数据类型和引用数据类型。

    Java语言是强类型语言:对数据类型的要求很严格。声明是什么类型的变量,就要存储什么类型的数值。

    e4cb4e44dc9604d935fee323180651e1.png

    二、基本数据类型

    Java中的基本数据类型:4类8种2.1整数型

    6edcdc178a8053a532233795a37ee2f1.png

    示例代码:

    public class Test1Type{  public static void main(String[] args){    //1.创建byte类型的变量,测试取值范围    byte b = 127;//取值范围:-128~127,共(256)    System.out.println(b);​    //2.short类型的变量,    short s = -32768;//取值范围:-32768~32767,共(65536个数值)    System.out.println(s);​    //3.int类型的变量    int i = 2147483647;//取值范围:-2147483648    System.out.println(i);​    //4.long类型的变量    long l1 = 9223372036854775807L;//加L表示该数值是lang类型的    System.out.println(l1);​​    int age = 19;    long l2 = 100000000L;  }}

    2.2浮点型

    31b258d45ac0d7d2c4f07b7780f47bfb.png

    就是生活中的小数

    • float类型:4个字节,32bit,定义变量的时候,数值后加f,或F
      float f = 3.14f;
    • double类型:8个字节,64bit,默认类型
    科学计数法表示:科学计数法:3.4E383.4E1,10的1次方-->10E2,10的平方-->100E3,10的立方-->1000E38,10的38次方-->10000000000...​

    示例代码:

    public class Test2FloatAndDouble {  public static void main(String[] args)   {    //1.单精度浮点数:float    float f = 3.14f;    System.out.println(f);​    //2.双精度浮点数:double    double d = 1.23;//java中的小数,默认类型是double    System.out.println(d);​​    //科学计数法    double d2 = 2000;//int,隐含了数据类型的自动转换    System.out.println(d2);​    double d3 = 2000.0;//double    System.out.println(d3);​    double d4 = 2E3;//相当于2*10的3次方    System.out.println(d4);​    //1.7E308,相当于1.7乘以10的308次方。17后有307个0    double d5 = 17000000000000000000000000.0;//double    System.out.println(d5);​​    //1.浮点类型:IEEE754标准。  }}​

    2.3 布尔类型

    boolean类型:表示逻辑对和错的。取值只有两个,true(对,真),false(错,假),

    14efdf7e4bb01fc72f3aeac7d83f8c22.png

    示例代码:

    public class Test3Boolean {  public static void main(String[] args)   {    //定义一个boolean类型 的变量    //该类型,只有2个值:true,false    boolean b1 = true;    boolean b2 = false;​    //"表达式",就是一个式子,数值和一些运算符组成的    // 3 + 5 -->8    boolean b3 = 3 > 5;//3 > 5的计算结果:false    //当给boolean类型变量赋值的时候,    //可以直接赋值:true,false    //也可以赋值为一个表达式:该表达式的计算结果是true或者false​    System.out.println(b1);    System.out.println(b2);    System.out.println(b3);//false  }}​

    2.4 字符型

    char,表示单个的字符,使用单引号引起来的,但本质上是个数值,因为对应的字符编码值。

    Java语言采用的字符集:Unicode编码。

    赋值方式一:通过''引起来的字符:'A'-->65

    赋值方式二:通过编码值进行赋值:10进制的编码值,16进制的unicode编码。

    e172c4b59d0d6108323e87576e288bba.png

    示例代码:

    public class Test4Character {  public static void main(String[] args)   {    //字符类型:char,使用单引号引起来    char c = 'A';        System.out.println(c);​    //使用编码值进行存储    char c2 = 65;//65是字符A的编码值    System.out.println(c2);​    //采用unicode编码:16进制赋值    char c3 = 'A';    System.out.println(c3);​    char c4 = '中';    System.out.println(c4);    System.out.println((int)c4);//将c4这个字符按照数值打印:其实就是该字符的编码值​    char c5 = 20013;    System.out.println(c5);//中​    char c6 = '国';//22269    System.out.println((int)c6);​    char c7 = 22269;    System.out.println(c7);  }}​


    转义字符:

    转义字符:将字符进行转义-->语法上使用      1、将有特殊作用的字符,转为普通的字符,不再起作用        ',",      2、还可以将一些普通的字符,转为有特殊含义的作用        ,
    8dd3222bd0b1f9540602c5960eafc9b9.png

    示例代码:

    public class Test5TranserSign {  public static void main(String[] args)   {    /*    转义字符:将字符进行转义-->语法上使用      1、将有特殊作用的字符,转为普通的字符,不再起作用        ',",      2、还可以将一些普通的字符,转为有特殊含义的作用        ,    */​    char c = ''';    System.out.println(c);    char c2 = '"';    System.out.println(c2);​    System.out.println("HelloWorld");    System.out.println("C:Rubypro");    System.out.println(""HelloWorld"");  }}​

    注意:String是引用类型,用于表示一个字符序列。使用双引号引起来的都是字符串的内容

    三、数据类型的转换

    Java这门语言,虽然是强类型语言:要求数据类型一致。 但是实际上允许我们在一定程度上可以转换:

      自动转换:    A:两种类型兼容    B:目标类型的取值范围  大于 源类型取值范围  强制转换:    A:两种类型兼容    B:目标类型的取值范围 小于 源类型的取值范围​    需要加强制转换符的语法:说明要强制转为哪种类型        (要转换的类型)数值​  取值范围:    byte-->short-->int-->long-->float-->double    char

    示例代码:

        public class Test7Convert     {    public static void main(String[] args)     {    /*    Java这门语言,虽然是强类型语言:要求数据类型一致。    但是实际上允许我们在一定程度上可以转换:        自动转换:    A:两种类型兼容    B:目标类型的取值范围  大于 源类型取值范围    强制转换:    A:两种类型兼容    B:目标类型的取值范围小于 源类型的取值范围        需要加强制转换符的语法:说明要强制转为哪种类型    (要转换的类型)数值        取值范围:    byte-->short-->int-->long-->float-->double    char        */        short s1 = 123;//    int i1 = s1;//隐含着将s1这个数值由short类型转为int,再赋值给i1这个变量    System.out.println(s1);    System.out.println(i1);            byte b1 = 10;    int i2 = b1;//byte-->int    System.out.println(i2);            //byte的取值范围:-128~127之间    byte b2 = (byte)s1;//将s1由short类型,强制转为byte类型,再赋值给byte类型的变量b2    System.out.println(b2);//123        short s2 = 128;    byte b3 = (byte)s2;//-128    System.out.println(b3);    /*    整型:2进制    byte--->short:自动转换    byte:8位    0000 0001    short:16位    0000 0000 1000 0000            short-->byte:强制转换,因为数据存在不安全性    0000 0000 1000 0000    1000 0000    */            double d1 = 2.5;    int i3 = (int)d1;//强制转换:浮点到整数:直接截取整数部分,忽略小数    System.out.println(i3);            long l1 = 100L;    float f1= l1;    System.out.println(f1);            //char 0-65535    //short -32768~32767        short s3 = -65;    char c2 = (char)s3;//65-->A,-65-->?    System.out.println(c2);    }    }

    三、总结

    1、数据类型:

    基本类型,引用类型

    4类8种:(记住,掌握,会用)

    整数型:4种byte,short,int(默认),long,加L浮点型:2种float加F,double(默认)字符型:char:单引号引起来的单个字符,对应的是编码表中的编码值:0-65535。  转义字符:,将字符进行转义    A:有特殊作用的字符,转为普通的字符        ;,",    B:普通的字符,转为有特殊作用的字符        ,65:A,97:a​boolean,布尔类型,true,false​

    类型转换:

    • 自动转换:类型兼容,取值范围小-->取值范围大。
    • 强制转换:类型兼容,取值范围大-->取值范围小。数据可能不安全,就需要强制转换
      (要转的类型)数值

    boolean类型不参加这些数值方面的转换

    String:引用类型

    双引号引起来的字符序列。"abc","helloworld"," 王二狗"

    四、作业

    1、课堂代码敲3遍

    2、完成以下题目

    A、声明字符串变量name,存储你的姓名,并打印出这个变量的值。​B、声明整型变量age,存储你的年龄,并打印出这个变量的值。​C、声明浮点型变量score,存储你的成绩,并打印出这个变量的值。
    展开全文
  • 11 转载于:https://blog.51cto.com/coollast/1106816
  • [img=https://img-bbs.csdn.net/upload/201306/05/1370419512_453108.png][/img] double类型的a,怎么就显示这么点。。。 范围不是从10的-37次幂 到 10的+37次幂吗,而且double是用64位长度的额
  • 在IEEE754标准中进行了单精度浮点数(float)和双精度数浮点数(double)的定义。float有32bit,double有64bit。它们的构成包括符号位、指数位和尾数位。 这些位的构成如下: 符号位-------------指数位------------...
  • Java中float取值范围(2011-07-29 01:05:04)标签:杂谈格式化表示java中的浮点数批准的事IEEE Standard 754 Floating PointNumbers规范,该规范的规范能够参看blog.csdn.net/treeroot/articles/94752.aspx.float挪借...
  • float的精度和取值范围

    万次阅读 多人点赞 2019-06-16 12:11:00
    关于float的精度和取值范围这个问题,我查询了很多次,每次都是用完就忘了,等到再使用的时候还需要再次查询,关键是这个问题大家给出的结果并不都是一致的,我得从众多的资料当中选择出正确的观点,这还要额外花...
  • 主要介绍了C#中float取值范围和精度,较为详细的分析了float取值范围与表示方法及精度等概念,有助于深入了解C#数据类型,需要的朋友可以参考下
  • 关于 float 类型取值范围的疑问

    千次阅读 2009-08-26 14:54:00
    关于C++的float取值范围 悬赏分:10 - 解决时间:2009-8-4 17:46 float为四个字节,最大的数为2的32次方,为什么会是3.4E-38~3.4E38(大约为2的64次方),这是为什么??请高人指教!!!! 提问者: 390820098 - ...
  • Float取值范围

    千次阅读 2018-04-12 21:38:38
    范围是3.4E-38 ——3.4E+38,可提供7位有效数字。 上述这两个量都是近似值,各个编译器不太一样的。 下面我就将标准值是怎么定义的,和你说一下: 这个比较复杂,建议你找一下IEEE754标准看一下。 ...
  • 基本类型1、整数:包含int,short,byte,long2、浮点型:float,double3、字符:char4、布尔:boolean分析基本数据类型的特点,最大值和最小值。1、基本类型:byte 二进制位数:8包装类:java.lang.Byte最小值:Byte....
  • double 64位中,有1位符号位,11位指数位,52位尾数位取值范围看指数部分:float:8为指数位,(-2^7~2^7-1)=(-128~127)float取值范围:-2^127~2^127 也即 -1.70e+38~+1.70e+38double:11位指数位,(-2^10~2^10-1...
  • flaot取值范围 #include #include #include <float.h> int main(int argc, char *argv[]) { printf("float分配%d字节\n",sizeof(float)); printf("%e\n",FLT_MIN);
  • float和double取值范围

    千次阅读 2019-08-29 11:23:18
    最近在复习的时候发现基础太薄弱,对于float和double虽然了解所占字节数,但不知道他们的取值范围是多少,这对参加大厂笔试题时是十分不利的 1.八种数据类型的分类如下: 第一类:整型 byte short int long 第二类...
  • C#中float取值范围和精度 原文:C#中float取值范围和精度float类型的表现形式: 默认情况下,赋值运算符右侧的实数被视为 double。因此,应使用后缀 f 或 F 初始化浮点型变量,如以下示例中所示:...
  • Java浮点数浮点数结构要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法,浮点数的结构组成,之所以会有这种所谓的结构,是因为机器只认识01,你想表示小数,你要机器认识小数点这个东西,必须采用...
  • Java浮点数浮点数结构要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法,浮点数的结构组成,之所以会有这种所谓的结构,是因为机器只认识01,你想表示小数,你要机器认识小数点这个东西,必须采用...
  • Java中float取值范围

    千次阅读 2014-12-30 09:15:03
    http://blog.csdn.net/treeroot/article/details/95071 规格化表示  java中的浮点数采用的事IEEE Standard 754 Floating Point Numbers标准,该标准的规范可以参考...  float占用
  • java中float取值范围

    2016-08-02 14:26:09
    http://www.233.com/JAVA/Instructs/060530/095611815.html
  • float类型的表现形式: 默认情况下,赋值运算符右侧的实数被视为 double。因此,应使用后缀 f 或 F 初始化浮点型变量,如以下示例中所示: ...float取值范围 float占用4个字节,和int是一样,也就是32bit. 1...
  • 结论float取值范围比long大验证public class Test1_DataTypeConversion { public static void main(String[] args) { float f = 1.3f; long l = 34; // l = f; // System.out.println(l);

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,827
精华内容 730
关键字:

float取值范围