当前位置: 首页 > news >正文

C#数值类型介绍及示例

在C#中,数值类型用于表示整数和浮点数。以下是C#支持的数值类型及其示例。

整型(Integral Types)

byte

8位无符号整数,取值范围为0到255。

sbyte

8位有符号整数,取值范围为-128到127。

short

16位有符号整数,取值范围为-32768到32767。

ushort

16位无符号整数,取值范围为0到65535。

int

32位有符号整数,默认的整数类型,取值范围为-2,147,483,648到2,147,483,647。

uint

32位无符号整数,取值范围为0到4,294,967,295。

long

64位有符号整数,取值范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807。

ulong

64位无符号整数,取值范围为0到18,446,744,073,709,551,615。

示例

int x = 127; // 声明一个int类型变量x,并赋值为127
long y = 0x7F; // 声明一个long类型变量y,并赋值为十六进制7F
int million = 1_000_000; // 使用下划线提高可读性
var b = 0b1010_1001_1011; // 二进制字面量

浮点型(Floating-Point Types)

float

单精度浮点数,通常用于科学计算。

double

双精度浮点数,C#中默认的浮点数类型。

decimal

128位十进制浮点数,用于需要高精度的金融计算。

示例

double d = 1.5; // 声明一个double类型变量d,并赋值为1.5
double million2 = 1E06; // 使用E表示科学记数法
float f = 43.5F; // 声明一个float类型变量,并使用F后缀
decimal d2 = -1.23M; // 声明一个decimal类型变量,并使用M后缀

数值字面量类型推断

C#允许根据赋值的值推断变量的类型。

var inferredDouble = 1.0; // 推断为double类型
var inferredInt = 1; // 推断为int类型

算数运算符

C#提供了基本的算数运算符,包括加(+)、减(-)、乘(*)、除(/)和模(%)。

示例

Console.WriteLine(2 + 1); // 输出3
Console.WriteLine(2 - 1); // 输出1
Console.WriteLine(2 * 1); // 输出2
Console.WriteLine(2 / 1); // 输出2
Console.WriteLine(10 % 3); // 输出1

自增和自减运算符

++(自增)和--(自减)运算符用于递增或递减变量的值。

示例

int x1 = 1;
Console.WriteLine(x1++); // 输出1,然后x1变为2
int y1 = 1;
Console.WriteLine(++y1); // 输出2,y1先递增再返回

整数溢出

C#中的整数运算可能会发生溢出,这取决于是否使用checkedunchecked上下文。

示例

int num = int.MinValue;
Console.WriteLine(int.MaxValue == --num); // 输出True,因为溢出unchecked
{int num3 = int.MinValue;Console.WriteLine(int.MaxValue == --num3); // 输出True,不抛出异常
}// 使用checked上下文将抛出OverflowException异常
// checked
// {
//     int num2 = int.MinValue;
//     Console.WriteLine(int.MaxValue == --num2); // 抛出异常
// }

位运算符

C#还支持位运算符,包括按位取反(~)、按位与(&)、按位或(|)、按位异或(^)、按位左移(<<)和按位右移(>>)。

隐式类型转换和显式类型转换

当进行算术运算时,较小的数据类型可能会隐式转换为较大的数据类型,以避免数据丢失。

示例

short x3 = 1, y3 = 1;
int z3 = x3 + y3; // x3和y3隐式转换为int
short z31 = (short)(x3 + y3); // 显式转换为short

常量

C#允许定义常量,使用const关键字。

示例

Console.WriteLine(Double.MaxValue); // 输出double类型的最大值
Console.WriteLine(Double.MinValue); // 输出double类型的最小值
Console.WriteLine(Double.NaN); // 输出Not a Number的特殊值
Console.WriteLine(Double.NaN == Double.NaN); // 输出False,因为NaN不等于任何值
Console.WriteLine(Double.IsNaN(0.0 / 0.0)); // 输出True,检测NaN
Console.WriteLine(object.Equals(Double.NaN, 0.0 / 0.0)); // 输出True,使用Equals方法比较

以上是对C#数值类型的介绍和示例。数值类型是编程中的基础,了解它们的特性和用法对于编写高效、可靠的代码至关重要。

相关文章:

  • 测试基础07:测试工作流程规范、进度同步与把控
  • PowerPivot-跨表取值
  • Python开发 —— 文件读写操作open与with open
  • C从零开始实现贪吃蛇大作战
  • aop整理
  • 从0开始带你成为Kafka消息中间件高手---第三讲
  • 100个 Unity小游戏系列五 -Unity 抽奖游戏专题三老虎机游戏
  • Android 四大组件 service
  • Firefox国际版
  • 【调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件】
  • Jeecg | 如何解决 ERR Client sent AUTH, but no password is set 问题
  • 前端应用开发实验:表单控件绑定
  • 什么叫USDT(泰达币)的前世今生!
  • JavaScript tab选项卡切换
  • 分享一个思路,使用插桩技术解决慢查询测试问题
  • python3.6+scrapy+mysql 爬虫实战
  • Angular2开发踩坑系列-生产环境编译
  • Fastjson的基本使用方法大全
  • Git学习与使用心得(1)—— 初始化
  • go append函数以及写入
  • jdbc就是这么简单
  • Linux gpio口使用方法
  • magento 货币换算
  • maya建模与骨骼动画快速实现人工鱼
  • October CMS - 快速入门 9 Images And Galleries
  • scrapy学习之路4(itemloder的使用)
  • Transformer-XL: Unleashing the Potential of Attention Models
  • Web设计流程优化:网页效果图设计新思路
  • 从输入URL到页面加载发生了什么
  • 工程优化暨babel升级小记
  • 好的网址,关于.net 4.0 ,vs 2010
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 微信开放平台全网发布【失败】的几点排查方法
  • 移动端唤起键盘时取消position:fixed定位
  • 移动端解决方案学习记录
  • 正则学习笔记
  • C# - 为值类型重定义相等性
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #1015 : KMP算法
  • (33)STM32——485实验笔记
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (十一)图像的罗伯特梯度锐化
  • (算法设计与分析)第一章算法概述-习题
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (一) storm的集群安装与配置
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)winform之ListView
  • (转)德国人的记事本
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET 的程序集加载上下文
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证