.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));

作者:重庆熊猫

出处:https://www.cnblogs.com/cqpanda/p/16736850.html

版权:本作品采用「不论是否商业使用都不允许转载,否则按3元1字进行收取费用」许可协议进行许可。

posted @   重庆熊猫  阅读(405)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示