.NET 中的数字Numerics in .NET
.NET 支持带有符号和无符号的 8 位、16 位、32 位和 64 位整数类型,如下表所示:
每个整数类型都支持一组标准算术运算符。System.Math 类为更广泛的数学函数集提供方法。
还可以使用 类对整数值中的单个位进行运算。
备注
无符号整数类型不符合 CLS。有关详细信息,请参阅 Language Independence and Language-Independent Components。
BigIntegerBigInteger
结构是不可变类型,表示其值没有理论上限或下限的任意大型整数。BigInteger 类型的方法几乎与其他整数类型的方法一致。
.NET 包括三个基元浮点类型,如下表所列:
类型 | 大小(以字节为单位) | 大致范围 | 精度 |
---|---|---|---|
4 | ±1.5 x 10−45 至 ±3.4 x 1038 | 大约 6-9 位数字 | |
System.Double | 8 | ±5.0 × 10−324 到 ±1.7 × 10308 | 大约 15-17 位数字 |
16 | ±1.0 x 10-28 至 ±7.9228 x 1028 | 28-29 位 |
每个浮点类型都支持一组标准的算术运算符。System.Math 类为更广泛的数学函数集提供方法。.NET Core 2.0 及更高版本包含 类,该类提供接受 Single 类型的参数的方法。
还可以使用 类对 Double 和 值中的单个位进行运算。System.Decimal 结构具有自己处理十进制值单个位的方法( 和 Decimal.Decimal(Int32[]))以及一套执行其他数学运算的方法。
和 Single 类型旨在用于本质上不精确的值(例如,两颗行星之间的距离)和无需高度精确和舍入误差小的应用程序。在需要较高准确度和尽量减小舍入误差的情况下,应使用 类型。
备注
Decimal 类型不会消除对舍入的要求。相反,它最大限度地减少了因舍入而导致的错误。
ComplexComplex
结构表示复数,即带实数部分和虚数部分的数字。此类型支持一套标准的算术、比较、相等、显式和隐式转换运算符,以及数学、代数和三角方法。
System.Numerics 命名空间包含一组启用了 .NET SIMD 的类型。SIMD (Single Instruction Multiple Data) 操作可以在硬件级别并行化。这可以增加向量化计算的吞吐量,这在数学、科学和图形应用中很常见。
两个矩阵类型:(表示 3x2 矩阵)和 Matrix4x4(表示 4x4 矩阵)。
类型,表示一个用于对三维物理旋转进行编码的向量。
Vector 类型,表示指定数字类型的向量,并提供受益于 SIMD 支持的一组广泛的运算符。 实例的计数是固定的,但其值 Vector.Count 取决于执行代码的计算机的 CPU。
备注
类型未包含在 .NET Framework 中。必须安装 System.Numerics.Vectors NuGet 包才能访问此类型。