C#数值类型介绍及示例

简介: 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#数值类型的介绍和示例。数值类型是编程中的基础,了解它们的特性和用法对于编写高效、可靠的代码至关重要。

相关文章
|
1月前
|
XML 存储 缓存
C#使用XML文件的详解及示例
C#使用XML文件的详解及示例
88 0
|
1月前
|
API C#
异步轮询 Web API 的实现与 C# 示例
异步轮询 Web API 的实现与 C# 示例
77 0
|
3月前
|
数据安全/隐私保护 C# UED
利用 Xamarin 开展企业级移动应用开发:从用户登录到客户管理,全面演示C#与Xamarin.Forms构建跨平台CRM应用的实战技巧与代码示例
【8月更文挑战第31天】利用 Xamarin 进行企业级移动应用开发能显著提升效率并确保高质量和高性能。Xamarin 的跨平台特性使得开发者可以通过单一的 C# 代码库构建 iOS、Android 和 Windows 应用,帮助企业快速推出产品并保持一致的用户体验。本文通过一个简单的 CRM 示例应用演示 Xamarin 的使用方法,并提供了具体的代码示例。该应用包括用户登录、客户列表显示和添加新客户等功能。此外,还介绍了如何增强应用的安全性、数据持久化、性能优化及可扩展性,从而构建出功能全面且体验良好的移动应用。
51 0
|
3月前
|
前端开发 开发者 Apache
揭秘Apache Wicket项目结构:如何打造Web应用的钢铁长城,告别混乱代码!
【8月更文挑战第31天】Apache Wicket凭借其组件化设计深受Java Web开发者青睐。本文详细解析了Wicket项目结构,帮助你构建可维护的大型Web应用。通过示例展示了如何使用Maven管理依赖,并组织页面、组件及业务逻辑,确保代码清晰易懂。Wicket提供的页面继承、组件重用等功能进一步增强了项目的可维护性和扩展性。掌握这些技巧,能够显著提升开发效率,构建更稳定的Web应用。
104 0
|
3月前
|
前端开发 程序员 API
从后端到前端的无缝切换:一名C#程序员如何借助Blazor技术实现全栈开发的梦想——深入解析Blazor框架下的Web应用构建之旅,附带实战代码示例与项目配置技巧揭露
【8月更文挑战第31天】本文通过详细步骤和代码示例,介绍了如何利用 Blazor 构建全栈 Web 应用。从创建新的 Blazor WebAssembly 项目开始,逐步演示了前后端分离的服务架构设计,包括 REST API 的设置及 Blazor 组件的数据展示。通过整合前后端逻辑,C# 开发者能够在统一环境中实现高效且一致的全栈开发。Blazor 的引入不仅简化了 Web 应用开发流程,还为习惯于后端开发的程序员提供了进入前端世界的桥梁。
330 0
|
3月前
|
机器学习/深度学习 数据挖掘 C#
ONNX Runtime入门示例:在C#中使用ResNet50v2进行图像识别
ONNX Runtime入门示例:在C#中使用ResNet50v2进行图像识别
94 0
|
6月前
|
监控 安全 C#
开发公司电脑监控软件的报警系统:一个C#示例
在当今数字化时代,企业对其计算机网络和系统的安全性和稳定性越来越重视。为了确保员工遵守公司政策、保护机密信息以及监控系统的正常运行,开发一种可靠的公司电脑监控软件变得至关重要。本文将介绍如何使用C#编写一个简单而有效的报警系统,以便监控关键数据并在必要时发出警报。
178 0
|
6月前
|
C#
C#断点续传的实现示例
C#断点续传的实现示例
73 0
|
6月前
|
定位技术 C# 图形学
Unity和C#游戏编程入门:创建迷宫小球游戏示例
Unity和C#游戏编程入门:创建迷宫小球游戏示例
153 2