ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

值类型(int / double / decimal / bool / char)

值类型(int / double / decimal / bool / char) 值类型int / double / decimal / bool / char值类型的共同特征数据直接存在变量所在的位置赋值就是复制一份。这一节重点是五个常用类型各自的行为差异。完整数值类型表类型位数范围字面量后缀用途byte80 到 255无二进制、IO、文件字节sbyte8-128 到 127无少用short16-32768 到 32767无少用ushort160 到 65535无少用int32约 -21 亿到 21 亿无默认默认整数类型uint320 到约 42 亿u少用long64极大L大整数、时间戳ulong64极大ul少用float32约 7 位有效数字f少用精度低double64约 15 到 16 位有效数字无默认默认浮点类型decimal12828 到 29 位有效数字m金额、财务bool—true / false无判断char16单个 Unicode 字符无字符int count 100; // 整数字面量默认就是 int long big 9999999999L; // 超出 int 范围必须加 L否则编译报错 float f 3.14f; // 小数字面量默认是 double给 float 必须加 f double d 3.14; decimal money 19.99m; // 金额必须加 m bool isOk true; char c A; // 单引号只能一个字符int整数除法会截断这是新手第一个坑int a 7; int b 2; Console.WriteLine(a / b); // 3 整数除整数小数部分直接砍掉 Console.WriteLine(a % b); // 1 取余 double r1 (double)a / b; // 3.5 把其中一边转成浮点结果才是浮点 double r2 a / (double)b; // 3.5 转哪边都行规则两边都是整数结果就是整数截断只要有一边是浮点结果才是浮点。double有精度误差不能用来比相等double x 0.1 0.2; Console.WriteLine(x); // 0.30000000000000004 Console.WriteLine(x 0.3); // False ← 看起来相等实际不等 decimal y 0.1m 0.2m; Console.WriteLine(y); // 0.3 Console.WriteLine(y 0.3m); // True原因double用二进制存小数而 0.1 在二进制里是无限循环的像十进制里 1/3 0.333... 永远写不完所以存进去就有微小误差。decimal内部按十进制存0.1 就是精确的 0.1。规则涉及钱的计算一律用decimaldouble只用于科学计算、图形坐标这类允许误差的场景。decimal精度高但慢decimal price 19.99m; decimal quantity 3m; decimal total price * quantity; // 59.97精确 // 和 double 混合运算会编译报错必须显式转换 double dd 1.5; decimal mix price (decimal)dd; // 要手动转bool只有 true / false不能和数字互转bool flag true; // int n (int)flag; // ❌ 编译报错 // bool b2 (bool)1; // ❌ 编译报错这点和 C / JavaScript 不同。C# 里if (1)是编译错误必须写if (true)或一个 bool 表达式。char本质是 16 位整数char c1 A; char c2 \n; // 转义换行 char c3 \t; // 转义制表符 char c4 \\; // 反斜杠本身 char c5 \; // 单引号本身 char c6 ; // 双引号在字符里不用转义 Console.WriteLine((int)c1); // 65 char 可以当数字用 char c7 (char)66; Console.WriteLine(c7); // B // 字符比较实际是在比数字 Console.WriteLine(a A); // True因为 97 65
返回列表