重庆熊猫 Loading

.NET教程 - 数值 & 随机数(Number & Random)

更新记录
转载请注明出处:
2022年9月29日 发布。
2022年9月28日 从笔记迁移到博客。

System.Numerics.BigInteger

BigInteger说明

BigInteger类型用于表示任意大的整数数值,而不会丢失精度

BigInteger类型定义在System.BigInterger.dll中的System.Numerics命名空间下

所在命名空间

using System.Numerics;

BigInteger定义

普通整数转为BigInterger类型

BigInteger bigInteger = 123;

使用BigInterger预定义常量

BigInteger bigInteger1 = BigInteger.Zero;
BigInteger bigInteger2 = BigInteger.MinusOne; //-1
BigInteger bigInteger3 = BigInteger.One; //1

使用BigInterger预定义方法

BigInteger bigInteger1 = BigInteger.Parse("10000000000000000000");

使用构造函数

BigInteger bigInteger = new BigInteger(123M);

数值类型与BigInteger相互转换

直接从整数类型隐式转换为BigInterger

实例:

BigInteger twentyFive = 25; // implicit conversion from integer

从BigInteger转为数值类型,需要使用显式转换

实例:显式从BigInteger转为数值类型

double g2 = (double) googol; // Explicit cast
BigInteger g3 = (BigInteger) g2; // Explicit cast
Console.WriteLine (g3);

实例:

BigInteger bigInteger = new BigInteger(123);
decimal value = (decimal)bigInteger;

字符串类型与BigInteger相互转换

实例:

BigInteger googol = BigInteger.Parse ("1".PadRight (101, '0'));
Console.WriteLine (googol.ToString()); // 10000000000000000000000000000
//00000000000000000000000000000000000000000000000000000000000000000000000

实例:从byte数组创建BigInteger

RandomNumberGenerator rand = RandomNumberGenerator.Create();
byte[] bytes = new byte[32];
rand.GetBytes(bytes);
var bigRandomNumber = new BigInteger(bytes); // Convert to BigInteger

BigInteger运算符重载

BigInteger已经运算符重载了支持常见的算数运算符

实例:

BigInteger bigInteger1 = BigInteger.Parse("6666666666666666666666666");
BigInteger bigInteger2 = BigInteger.Parse("6666666666666666666666666");
BigInteger result1 = bigInteger1 + bigInteger2;
BigInteger result2 = bigInteger1 - bigInteger2;
BigInteger result3 = bigInteger1 * bigInteger2;
BigInteger result4 = bigInteger1 / bigInteger2;
BigInteger result5 = bigInteger1 % bigInteger2;
Console.WriteLine(result1); //13333333333333333333333332
Console.WriteLine(result2); //0
Console.WriteLine(result3); //44444444444444444444444435555555555555555555555556
Console.WriteLine(result4); //1
Console.WriteLine(result5); //0

实例:

BigInteger googol = BigInteger.Pow (10, 100);
BigInteger bigInteger1 = BigInteger.One;
BigInteger bigInteger2 = BigInteger.Parse("123123");
BigInteger bigInteger3 = bigInteger1 + bigInteger2;

静态成员

获得最大值

BigInteger.Max();

System.Numrics.Complex

说明:表示数学中的复数

注意:定义在System.Numrics程序集中,使用需要添加该引用

注意:使用需要引入命名空间using System.Numrics;

实例:创建复数

var c1 = new Complex (2, 3.5);
var c2 = new Complex (3, 0);
Console.WriteLine (c1.Real); // 2
Console.WriteLine (c1.Imaginary); // 3.5
Console.WriteLine (c1.Phase); // 1.05165021254837
Console.WriteLine (c1.Magnitude); // 4.03112887414927

实例:从极坐标转换

Complex c3 = Complex.FromPolarCoordinates (1.3, 5);

实例:算数运算

var c1 = new Complex (2, 3.5);
var c2 = new Complex (3, 0);
Console.WriteLine (c1 + c2); // (5, 3.5)
Console.WriteLine (c1 * c2); // (6, 10.5)

实例:

Complex someComplex = new Complex(1,2); //实例化复数
Console.WriteLine(someComplex.Real);    //获得实部
Console.WriteLine(someComplex.Imaginary); //获得虚部

Complex someComplex2 = new Complex(3, 4); //实例化第二个复数

Complex someComplex3 = someComplex + someComplex2; //第三个复数
Console.WriteLine(someComplex3.Real);
Console.WriteLine(someComplex3.Imaginary);

System.Math

Math说明

Math是一个静态类型
Math静态类型的主要成员总结图:
image

数值舍入

Math.Round
Math.Truncate
Math.Floor
Math.Ceiling

最大最小

Math.Max
Math.Min

绝对值和符号

Math.Abs
Math.Sign

平方根

Math.Sqrt

幂运算

Math.Pow
Math.Exp

对数运算

Math.Log
Math.Log10

三角函数

Math.Sin
Math.Cos
Math.Tan
Math.Sinh
Math.Cosh
Math.Tanh
Math.Asin
Math.Acos
Math.Atan

System.Random

实例:从0到99(不包括100)

Random random = new Random();
int result1 = random.Next(100);
Console.WriteLine(result1);

实例:从10到99(不包括100)

Random random = new Random();
int result2 = random.Next(10, 100);
Console.WriteLine(result2);

实例:生成0~1之间的数值(不包括1)

Random random = new Random();
double result3 = random.NextDouble();
Console.WriteLine(result3);

数值进制转换

十进制转为其他进制

//十进制转为二进制
Console.WriteLine(Convert.ToString(12, 2));
//十进制转为八进制
Console.WriteLine(Convert.ToString(12, 8));
//十进制转为十六进制
Console.WriteLine(Convert.ToString(12, 16));
Console.WriteLine(12.ToString("x"));
Console.WriteLine(12.ToString("X"));

其他进制转为十进制

//二进制转为十进制
Console.WriteLine(Convert.ToInt32("1010",2));
//八进制转为十进制
Console.WriteLine(Convert.ToInt32("17",8));
//十六进制转为十进制
Console.WriteLine(Convert.ToInt32("A", 16));
posted @ 2022-09-29 08:03  重庆熊猫  阅读(352)  评论(0编辑  收藏  举报