C#数据类型
|
.NET框架数据类型
|
说 明
|
bool
|
System.Boolean
|
逻辑值,true或者false,默认值为false
|
byte
|
System.Byte
|
无符号的字节,所存储的值的范围是0~255,默认值为0
|
sbyte
|
System.SByte
|
带符号的字节,所存储的值的范围是-128~127,默认值为0
|
char
|
System.Char
|
无符号的16位Unicode字符,默认值为’/0’
|
decimal
|
System.Decimal
|
不遵守四舍五入规则的十进制数,通常用于财务方面的计算,默认值为0.0m
|
double
|
System.Double
|
双精度的浮点类型,默认值为0.0d
|
float
|
System.Single
|
单精度的浮点类型,默认值为0.0f
|
int
|
System.Int32
|
带符号的32位整型,默认值为0
|
uint
|
System.UInt32
|
无符号的32位整型,默认值为0
|
long
|
System.Int64
|
带符号的64位整型,默认值为0
|
ulong
|
System.UInt64
|
无符号的64位整型,默认值为0
|
object
|
System.Object
|
指向类实例的引用,默认值为null
|
short
|
System.Int16
|
带符号的16位整型,默认值为0
|
ushort
|
System.UInt16
|
无符号的16位整型,默认值为0
|
string
|
System.String
|
指向字符串对象的引用,默认值为null
|
C语言中 float、double、long double精度、数值范围
IEEE754浮点数的表示方法。C语言里对float类型数据的表示范围为-3.4*10^38~+3.4*10^38。double为-1.7*10^-308~1.7*10^308,long double为-1.2*10^-4932~1.2*10^4932.
类型 |
比特(位)数 |
有效数字 |
数值范围 |
float |
32 |
6~7 |
-3.4*10^38~+3.4*10^38 |
double |
64 |
15~16 |
-1.7*10^-308~1.7*10^308 |
long |
128 |
18~19 |
-1.2*10^-4932~1.2*10^4932 |
decimal |
128 |
28~29 |
±1.0*10^28 ~ ±7.9*10^28 |
基础类型描述:
byte: 八位整数 -128——127,可用来节省内存的使用。
short: 16位整数 -32768——32,767,也比较省内存。
int: 32位整数 -2,147,483,648——2,147,483,647,一般来说整数都够用了
long: 64位整数 -9,223,372,036,854,775,808—— 9,223,372,036,854,775,807,一般不需要用
float: 32位浮点,如果浮点需要节省内存用这个。
Double: 64位浮点,一般非整数浮点可用这个。
究竟如何计算该范围,分析如下:
对于单精度浮点数(float)来说,符号位一位,指数位8位,尾数23位。指数能够表示的指数范围为-128~127。尾数为23位。
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个
隐含着的“1”,由于它是不变的,故不能对精度造成影响。float:2^23 =
8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;double:2^52 =
4503599627370496,一共16位,同理,double的精度为15~16位。
其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。float的范围为-2^128 ~
+2^128,也即-3.40E+38 ~
+3.40E+38;double的范围为-2^1024 ~
+2^1024,也即-1.79E+308
~+1.79E+308。
以float为例,如下表:
符号 |
尾数 |
指数 |
1 |
23 |
8 |
数符(+-) |
小数部分(决定精度) |
-127~128 指数(决定范围) |
例如:
+1.1111111111111111111111*2^127(小数点后面23个1,由于尾数的范围1~2,其最高位总为1,故只需存取小数部分,所以小数为是23位1),约等于2*2^127=3.4*10^38。为3.4*10^38负数亦然。
Double的计算与此类似,double的符号位为63位,指数为62~52位,共11位。表示的范围为-1024~1023。尾数为51~0。表示的
范围为+1.1111111111111111..11111*2^1023(小数点后面52个1)为1.7*10^308。负数亦然。
mysql & java:
类型名称 | 显示长度 | 数据库类型 | JAVA类型 | JDBC类型索引(int) |
VARCHAR | L+N | VARCHAR | java.lang.String | 12 |
CHAR | N | CHAR | java.lang.String | 1 |
BLOB | L+N | BLOB | java.lang.byte[] | -4 |
TEXT | 65535 | VARCHAR | java.lang.String | -1 |
INTEGER | 4 | INTEGER UNSIGNED | java.lang.Long | 4 |
TINYINT | 3 | TINYINT UNSIGNED | java.lang.Integer | -6 |
SMALLINT | 5 | SMALLINT UNSIGNED | java.lang.Integer | 5 |
MEDIUMINT | 8 | MEDIUMINT UNSIGNED | java.lang.Integer | 4 |
BIT | 1 | BIT | java.lang.Boolean | -7 |
BIGINT | 20 | BIGINT UNSIGNED | java.math.BigInteger | -5 |
FLOAT | 4+8 | FLOAT | java.lang.Float | 7 |
DOUBLE | 22 | DOUBLE | java.lang.Double | 8 |
DECIMAL | 11 | DECIMAL | java.math.BigDecimal | 3 |
BOOLEAN | 1 | 同TINYINT | ||
ID | 11 | PK (INTEGER UNSIGNED) | java.lang.Long | 4 |
DATE | 10 | DATE | java.sql.Date | 91 |
TIME | 8 | TIME | java.sql.Time | 92 |
DATETIME | 19 | DATETIME | java.sql.Timestamp | 93 |
TIMESTAMP | 19 | TIMESTAMP | java.sql.Timestamp | 93 |
YEAR | 4 | YEAR | java.sql.Date | 91 |