6、整型与浮点型

1、数值型

整型

  tinyint:占据空间1字节,储存范围-128——127,0——255
  smallint:2个字节
  mediuint:3个字节
  Int:4个字节
  bigint:8个字节

小数

浮点型:float(M,D)
M叫“精度”--->代表总位数,D叫“标度”,代表小数位(小数右边的位数) 

定点型:decimal(M,D)
长度不确定,是变长类型,把整数部分和小数部分,分开存储,比float精确。

1.1、学习tinyint的参数: (M) unsigned zerofill

unsigned

create table class(
    sname varchar(20) not null default ‘‘,
    age tinyint not null default 0
    )engine myisam charset utf8;
insert into class values (‘王五‘,128);
显示:1264 - Out of range value for column ‘age‘ at row 1

alter table class add score tinyint unsigned not null default 0;
insert into class(sname,score) values (‘张飞‘,-1);
显示:1264 - Out of range value for column ‘score‘ at row 1
  • 经过测试:age的默认范围是-128——127
  • int类型的数据,不加特殊说明,默认是有符号
  • 要想得到无符号修饰符,在后面添加unsigned

(M) 和 zerofill

zerofill zero是零,fill是填充,代表0填充
M必须和zerofill配合才有意义,M表示补0的宽度,表示位数不够的时候用0填充
zerofill默认是unsigned类型

alter table class add snum smallint(5) zerofill not null default 0;
insert into class (sname,snum) values (‘吕布‘,1);

使用navicat客户端,可能显示不出用0填充的现象
通过cmd命令行使用mysql客户端才能够显示

1.2、学习浮点型float的参数: (M,D)

create table salary(
sname varchar(20) not null default ‘‘,
gongzi float(6,2)
)engine myisam charset utf8;

insert into salary values (‘张三‘,-9999.99);
insert into salary values (‘李四‘,9999.99);

insert into salary values (‘王2‘,9999.999);
显示:1264 - Out of range value for column ‘gongzi‘ at row 1

alter table salary add bonus float(5,2) unsigned not null default 0.00;

insert into salary (sname,bonus) values (‘王五‘,888.88);

1.3、学习定点型decimal的参数: (M,D)

create table account(
id int not null default 0,
acc1 float(9,2) not null default 0.00,
acc2 decimal(9,2) not null default 0.00
)engine myisam charset utf8;

insert into account
values
(1,1234567.23,1234567.23);

mysql> select * from account;
+----+------------+------------+
| id | acc1       | acc2       |
+----+------------+------------+
|  1 | 1234567.25 | 1234567.23 |
+----+------------+------------+
1 row in set

通过上例可以看出float有时会损失精度,如果想银行账户这样的敏感字段,建议用decimal存储。
实际在银行使用整型存储,存的单位是分。

补充知识:

1、为什么有符号为tinyint的范围为:-128——127

计算机为了表示一个负数,会把最高位(左侧)的0/1,当成符号位来看,如为0,则是正数,1则是负数
0 0000000 
1 0000000
如果理解为+0,-0的话,则重复,浪费了一种存储的可能性,
为了解决这个问题,计算机采用补码的形式存储负数。
负数 = -(非符号位补码+1) = 绝对值位-128
1 1111111 --> -1
1 0000000 --> -128

2、浮点数占多大空间呢?

float能存10^38--10^(-38),如果M<=24,占4个字节,否则占8个字节。

原文地址:https://www.cnblogs.com/Stephanie-boke/p/11664491.html

时间: 2024-11-01 22:03:09

6、整型与浮点型的相关文章

C++整型、浮点型与字符串型相符转换

前言 整型.浮点型与字符串的相互转换可以用自带的函数来实现,本人使用的是vs2015,所以下面的函数需要改变一下,请看下面的总结. 正文 一.整型转字符串型 1. int转为字符串 itoa(int _Value, char *_Buffer, int _Radix); 需改为_itos_s(int _Value, char *_Buffer, size_t _BufferCount, int _Radix); _Radix:表示进制,若十进制则Radix为10 _BufferCount:存储的

010整型、浮点型、字符串型、列表型、字典型、布尔型

整型.浮点型.字符串型.列表型.字典型.布尔型 一.整型(int) 1.1作用 表示人的年龄.各种号码.级别 1.2定义 age = 18 # age=int(18) print(id(age)) print(type(age)) print(age) 输出结果: 4530100848 <class 'int'> 18 1.3 如何用 加减乘除.逻辑判断(大于.小于) 二.浮点型(float) 2.1 作用 表示身高.体重.薪资 2.2 定义 salary = 2.1 # salary=flo

Python 数值类型(整型、长整型、浮点型、复数型)

一.整型 In [1]: a = 123 # 定义整数类型 In [2]: type(a) # 查看数据类型 Out[2]: int -2147483648 —— 2147483647 # 整型的取值范围,如果超过了这个范围则成为长整型 二.长整型 In [7]: a = 123456789123456789123456789 # 定义长整型 In [8]: type(a) # 查看数据类型 Out[8]: long In [9]: a # 长整型后面会带有字母(l或L)以标识这是长整型 Out

整数、长整型、浮点型、字符串

如: 18.73.84 每一个整数都具备如下功能: int 二.长整型 可能如:2147483649.9223372036854775807 每个长整型都具备如下功能: long 三.浮点型 如:3.14.2.88 每个浮点型都具备如下功能: float 四.字符串 如:'wupeiqi'.'alex' 每个字符串都具备如下功能: str  

python应用问题01--&gt;xlrd默认将整型转为浮点型

前言 学习这件事不在乎有没有人教你,最重要的是在于你自己有没有觉悟和恒心.--法布尔 快夜深人静,窗外蛙声一遍,把这篇写完分享给大家! 一.问题来由 1.1 问题现象:笔者在编写一段读取excel数据的代码,excel中包含整型数据,如下图: 图中 定位值 有很低概率是整型,超时时间 可填(整型)或 不可填(空字符串) 1.2 简单读取代码: import xlrd workbook = xlrd.open_workbook('page_element_infos.xlsx') sheet =

js类型转换-字符串转整型、浮点型方法、强制类型转换等

1. 转换函数: js 提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法, 这两个函数才能正确运行:对其他类型返回的都是NaN(Not a Number).这两个转换函数的结果都是将String数据类型转化为Number. 在 判断字符串是否是数字值前,parseInt()和parseFloat()都会仔细分析该字符串.parseInt()方法首先查看位置0处的 字符,判断它是否是个有效数字:如果不是,

JS 整型,浮点型转化为字符型

JS 数据类型转换 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才能正确运行:对其他类型返回的都是NaN(Not a Number). 在判断字符串是否是数字值前,parseInt()和parseFloat()都会仔细分析该字符串.parseInt()方法首先查看位置0处的 字符,判断它是否是个有效数

整型与浮点型相互转换的相关问题

1.当整型值转换float型值时,也可能损失数度 2.当float型值转换为整型值时,那么其结果是不可预料的 具体可以理解如下: (1)当整型值转换float型值时,也可能损失数度 假设 float f = 100: 那么f在内存中可能是99.99999,处于 浮点数的存储结构,不能达到100%的精度,只是非常的逼近你的值 (2)float可以用科学技术法,如float f = 1.1e33;这个就没办法强转给整形 3.计算机发现目标数据类型错误,不读取,归零处理.下列结果为0 int main

C语言---整型字符串转换

C语言提供了几个标准库函数,能够将随意类型(整型.长整型.浮点型等)的数字转换为字符串.下面是用itoa()函数将整数转 换为字符串的一个样例: # include <stdio.h>    # include <stdlib.h> void main (void)    {    int num = 100;    char str[25];    itoa(num, str, 10);    printf("The number ’num’ is %d and the