.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静态类型的主要成员总结图:
数值舍入
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));
本文来自博客园,作者:重庆熊猫,转载请注明原文链接:https://www.cnblogs.com/cqpanda/p/16736850.html