数值Literal的类型推断
- 默认情况下,编译器会推断一个数值Literal是double还是整数类型:
- 如果包含小数点,或以指数形式展现,那么就是double类型
- 否则literal的类型是下面列表里第一个能容纳该数值的类型:int,uint,long,ulong
数值的后缀
- U、L很少使用,因为uint、long、ulong要么可以被推断出来,要么可以从int隐式转换过来
- D 其实很多余。
- F、M是比较有用的,当指定float或decimal的Literal的时候,应该加上。
类型转换 整数转换
类型转换 浮点型转换
类型转换 浮点型和整数类型转换
注意
- 当从浮点型转为整型时,小数部分是被截断的,没有舍入。
- 把一个很大的整数隐式的转换为浮点类型之后,会保证量级不变,但是偶尔会丢失精度。这是因为浮点类型有更多的量级,而精度可能不足。
decimal
8,16位整数类型
- byte、sbyte、short、ushort
- 没有自己的算术操作符,C#会按需对它们进行隐式转换到大一点的整数类型
- 这里会将short转化为int 然后int默认隐式转化为short的时候就会编译出错
float double的特殊数值
NAN 类型
double VS decimal
实数的舍入错误
Decimal
基于10,可以精确的表达基于10的数据(包括基于2,5的数据)
循环数据
double 和 decimal 都不可以精确的表达循环数据

































