Easy-DotNET Easy-DotNET
🏠首页
  • 知识地图
  • 源码脑图

    • 总览
    • Program
    • WebApplication
    • Host主机
    • WebHost主机
    • 依赖注入
    • Autofac
    • Middleware中间件
    • RateLimiter限制速率
    • 响应缓存、请求解压缩
  • 设计初衷
  • 克隆
  • 类型转换
  • 日期时间
  • IO流
  • 工具类
  • 语言特性
  • 集合类
  • Codec编码
  • 文本操作
  • 数学
  • 图片
  • 网络
  • Emoji表情
  • C# 12
  • C# 11
  • C# 10
  • C# 9.0
  • C# 8.0
  • C# 早期版本
  • C# 教程
  • ORM
  • 定时任务
  • 日志
  • 认证与授权
  • Swagger
  • 对象映射
  • 熔断重试限流
  • 缓存
  • 注册发现
  • 网关
  • GraphQL
  • 更多
  • Docker

    • 简介
    • Adminer
    • Apisix
    • Apollo
    • Cassandra
    • Cerebro
    • ClickHouse
    • Consul
    • EasyMock
    • Elasticsearch
    • Emqx
    • FastDFS
    • Flink
    • Gitlab
    • Jenkins
    • Jrebel
    • MariaDB
    • MySQL
    • Percona
    • Phpmyadmin
    • PostgreSQL
    • Redis
  • Linux

    • 查看Linux系统信息
    • CentOS7调整磁盘分区
    • IO压测
    • 图形化监控工具Cockpit
  • 总览
  • 列表

    • 算法数据结构
    • API
    • 应用框架
    • 应用模板
    • 操作系统
    • 工作流
    • 入门套件
    • 示例
    • 人工智能
    • 程序集
    • Assets
    • 认证授权
    • Blazor
    • 区块链
    • 书籍
    • 自动构建
    • 报表
    • 缓存
    • 日历
    • 聊天
    • CLI
    • CLR
    • CMS
    • 代码分析和指标
    • 代码片段
    • 压缩
    • 持续集成
    • 密码学
    • 数据库
    • 数据库驱动
    • 日期时间
    • 反编译
    • 部署
    • DirectX
    • 分布式计算
    • DLR
    • 文档
    • 电商支付
    • 模拟器
    • 环境管理
    • ETL
    • 事件消息
    • Exception
    • 扩展
    • 函数式编程
    • 游戏引擎
    • GIS
    • Git工具
    • 绘图
    • GraphQL
    • GUI
    • HTML-CSS
    • HTTP
    • IDE
    • 图片处理
    • 安装工具
    • 交互式编程
    • 国际化
    • 互操作性
    • IoC
    • JS引擎
    • 日志
    • 机器学习和数据科学
    • Markdown
    • 邮件
    • 数学
    • 媒体
    • 指标
    • 微型框架
    • 最小化器
    • MVVM
    • 网络
    • 对象映射
    • Office
    • OpenAI
    • ORM
    • 包管理器
    • PDF
    • 性能分析工具
    • 协议
    • 推送通知
    • SQL构建器
    • 消息队列
    • RPC
    • 响应式编程
    • 实时通信
    • 正则表达式
    • 任务调度
    • SDK和API
    • 搜索引擎
    • 序列化
    • SMS
    • 状态机
    • 静态站点生成
    • 强命名
    • 风格指南
    • 模板引擎
    • 测试
    • 工具
    • 交易
    • UI自动测试
    • Visual Studio 插件
    • Web浏览器
    • Web框架
    • WebServers
    • WebSocket
    • Windows服务
    • WPF
    • 解析器
    • 源码生成
    • 其他
    • 资源
  • AspNetCore面试题
  • Elasticsearch面试题
  • MongoDB面试题
  • MySql面试题
  • Nginx面试题
  • RabbitMQ面试题
  • Redis面试题
  • 设计模式
  • 微服务
🧑‍💻.NET Blog
GitHub (opens new window)
🏠首页
  • 知识地图
  • 源码脑图

    • 总览
    • Program
    • WebApplication
    • Host主机
    • WebHost主机
    • 依赖注入
    • Autofac
    • Middleware中间件
    • RateLimiter限制速率
    • 响应缓存、请求解压缩
  • 设计初衷
  • 克隆
  • 类型转换
  • 日期时间
  • IO流
  • 工具类
  • 语言特性
  • 集合类
  • Codec编码
  • 文本操作
  • 数学
  • 图片
  • 网络
  • Emoji表情
  • C# 12
  • C# 11
  • C# 10
  • C# 9.0
  • C# 8.0
  • C# 早期版本
  • C# 教程
  • ORM
  • 定时任务
  • 日志
  • 认证与授权
  • Swagger
  • 对象映射
  • 熔断重试限流
  • 缓存
  • 注册发现
  • 网关
  • GraphQL
  • 更多
  • Docker

    • 简介
    • Adminer
    • Apisix
    • Apollo
    • Cassandra
    • Cerebro
    • ClickHouse
    • Consul
    • EasyMock
    • Elasticsearch
    • Emqx
    • FastDFS
    • Flink
    • Gitlab
    • Jenkins
    • Jrebel
    • MariaDB
    • MySQL
    • Percona
    • Phpmyadmin
    • PostgreSQL
    • Redis
  • Linux

    • 查看Linux系统信息
    • CentOS7调整磁盘分区
    • IO压测
    • 图形化监控工具Cockpit
  • 总览
  • 列表

    • 算法数据结构
    • API
    • 应用框架
    • 应用模板
    • 操作系统
    • 工作流
    • 入门套件
    • 示例
    • 人工智能
    • 程序集
    • Assets
    • 认证授权
    • Blazor
    • 区块链
    • 书籍
    • 自动构建
    • 报表
    • 缓存
    • 日历
    • 聊天
    • CLI
    • CLR
    • CMS
    • 代码分析和指标
    • 代码片段
    • 压缩
    • 持续集成
    • 密码学
    • 数据库
    • 数据库驱动
    • 日期时间
    • 反编译
    • 部署
    • DirectX
    • 分布式计算
    • DLR
    • 文档
    • 电商支付
    • 模拟器
    • 环境管理
    • ETL
    • 事件消息
    • Exception
    • 扩展
    • 函数式编程
    • 游戏引擎
    • GIS
    • Git工具
    • 绘图
    • GraphQL
    • GUI
    • HTML-CSS
    • HTTP
    • IDE
    • 图片处理
    • 安装工具
    • 交互式编程
    • 国际化
    • 互操作性
    • IoC
    • JS引擎
    • 日志
    • 机器学习和数据科学
    • Markdown
    • 邮件
    • 数学
    • 媒体
    • 指标
    • 微型框架
    • 最小化器
    • MVVM
    • 网络
    • 对象映射
    • Office
    • OpenAI
    • ORM
    • 包管理器
    • PDF
    • 性能分析工具
    • 协议
    • 推送通知
    • SQL构建器
    • 消息队列
    • RPC
    • 响应式编程
    • 实时通信
    • 正则表达式
    • 任务调度
    • SDK和API
    • 搜索引擎
    • 序列化
    • SMS
    • 状态机
    • 静态站点生成
    • 强命名
    • 风格指南
    • 模板引擎
    • 测试
    • 工具
    • 交易
    • UI自动测试
    • Visual Studio 插件
    • Web浏览器
    • Web框架
    • WebServers
    • WebSocket
    • Windows服务
    • WPF
    • 解析器
    • 源码生成
    • 其他
    • 资源
  • AspNetCore面试题
  • Elasticsearch面试题
  • MongoDB面试题
  • MySql面试题
  • Nginx面试题
  • RabbitMQ面试题
  • Redis面试题
  • 设计模式
  • 微服务
🧑‍💻.NET Blog
GitHub (opens new window)
npm
  • 最全工具类

    • 设计初衷
  • 克隆

    • 对象克隆-CloneUtil
  • 类型转换

    • 类型转换-ConvertUtil
  • 日期时间

    • 日期工具-DateTimeUtil
    • 时间戳工具-TimestampUtil
    • 农历工具-LunarCalendarUtil
    • 计时器工具-TimerUtil
  • IO流

    • IO工具类-IoUtil
    • 文件工具类-FileUtil
    • 文件类型判断-FileTypeUtil
    • 文件监听-WatchMonitor
    • 文件跟随-Tailer
  • 工具类

    • 概述
    • 信息脱敏工具-DesensitizedUtil
    • 字符串工具-StrUtil
    • 16进制工具-HexUtil
    • Escape工具-EscapeUtil
    • Hash算法-HashUtil
    • URL工具-URLUtil
    • XML工具-XmlUtil
    • 对象工具-ObjectUtil
    • 反射工具-ReflectUtil
    • 泛型类型工具-TypeUtil
    • 分页工具-PageUtil
    • 类工具-ClassUtil
    • 程序集工具-DLLUtil
    • 枚举工具-EnumUtil
    • 环境工具-EnvUtil
    • 进程工具-ProcessUtil
    • 运行时工具-RuntimeUtil
    • 数字工具-NumberUtil
    • 数组工具-ArrayUtil
    • 随机工具-RandomUtil
    • 唯一ID工具-IdUtil
    • 压缩工具-ZipUtil
    • 正则工具-RegexUtil
    • 身份证工具-IdcardUtil
    • 社会信用代码工具-CreditCodeUtil
    • MEF加载工具-MEFUtil
  • 语言特性

    • 单例工具-SingletonUtil
    • 二进码十进数-BCDUtil
    • 树结构工具-TreeUtil
  • 集合类

    • 概述
    • 字典工具-DictionaryUtil
    • 列表工具-ListUtil
    • Iterator工具-IteratorUtil
    • 队列工具-QueueUtil
    • 堆栈工具-StackUtil
    • 双向链表-LinkedListUtil
  • Codec编码

    • Base62编码解码-Base62
    • Base64编码解码-Base64
    • Base32编码解码-Base32
    • 莫尔斯电码-Morse
    • BCD码-BCD
    • 回转N位密码-Rot
    • Punycode实现-PunyCode
  • 文本操作

    • CSV文件处理工具-CsvUtil
    • Unicode编码转换工具-UnicodeUtil
    • 字符串切割-StrSplitter
  • 数学

    • 数学相关-MathUtil
      • 简介
      • EasyTool.MathUtil 类
        • Gcd-计算两个整数的最大公约数
        • Lcm-计算两个整数的最小公倍数
        • IsPrime-判断一个整数是否为质数
        • ApproxEqual-计算两个浮点数的差的绝对值是否小于指定的精度
        • Factorial-求一个整数的阶乘
        • Fibonacci-求一个整数的斐波那契数列的值
        • CountBits-求一个整数的二进制表示中 1 的个数
        • Average-求两个浮点数的平均值
        • Median-求两个浮点数的中位数
        • Pow-计算 n 的 k 次方
        • IsPerfectSquare-判断一个整数是否为完全平方数
        • IsHappyNumber-计算一个整数的各个数位上数字的平方和
        • HammingDistance-计算两个整数的二进制表示中有多少位不同
        • GetAllFactors-求一个整数的所有因子
        • Add-计算两个整数的和
      • 代码示例
    • 数据预测-PredictUtil
  • 图片

    • 图片工具-ImgUtil
  • 网络

    • 网络工具-NetUtil
  • Emoji表情

    • Emoji工具-EmojiUtil
目录

数学相关-MathUtil

# 简介

静态工具类 MathUtil,提供了一系列常用的数学相关方法,包括求最大公约数、最小公倍数、判断质数、计算阶乘和斐波那契数列等常用算法。同时还包括了一些常用的计算方法,如判断浮点数是否相等、求平均值和中位数等。此外,工具类还提供了计算二进制中 1 的个数、判断完全平方数、判断快乐数等功能,同时还提供了一些与数学相关的小技巧,如计算两个整数的二进制中不同的位数、计算一个整数的所有因子等。

# EasyTool.MathUtil 类

方法说明:

  • Gcd: 计算两个整数的最大公约数。
  • Lcm: 计算两个整数的最小公倍数。
  • IsPrime: 判断一个整数是否为质数。
  • ApproxEqual: 计算两个浮点数的差的绝对值是否小于指定的精度。
  • Factorial: 求一个整数的阶乘。
  • Fibonacci: 求一个整数的斐波那契数列的值。
  • CountBits: 求一个整数的二进制表示中 1 的个数。
  • Average: 求两个浮点数的平均值。
  • Median: 求两个浮点数的中位数。
  • Pow: 计算 n 的 k 次方。
  • IsPerfectSquare: 判断一个整数是否为完全平方数。
  • IsHappyNumber: 计算一个整数的各个数位上数字的平方和,如果结果为 1,则返回 true;否则进行下一次计算,直到结果为 1 或者进入死循环为止。
  • HammingDistance: 计算两个整数的二进制表示中有多少位不同。
  • GetAllFactors: 求一个整数的所有因子。
  • Add: 计算两个整数的和,如果结果溢出了 int 类型的取值范围,则返回 int.MaxValue。

# Gcd-计算两个整数的最大公约数

/// <summary>
/// 计算两个整数的最大公约数
/// </summary>
/// <param name="a">第一个整数</param>
/// <param name="b">第二个整数</param>
/// <returns>最大公约数</returns>
public static int Gcd(int a, int b)

# Lcm-计算两个整数的最小公倍数

/// <summary>
/// 计算两个整数的最小公倍数
/// </summary>
/// <param name="a">第一个整数</param>
/// <param name="b">第二个整数</param>
/// <returns>最小公倍数</returns>
public static int Lcm(int a, int b)

# IsPrime-判断一个整数是否为质数

/// <summary>
/// 判断一个整数是否为质数
/// </summary>
/// <param name="n">要判断的整数</param>
/// <returns>如果是质数,则返回 true;否则返回 false</returns>
public static bool IsPrime(int n)

# ApproxEqual-计算两个浮点数的差的绝对值是否小于指定的精度

/// <summary>
/// 计算两个浮点数的差的绝对值是否小于指定的精度
/// </summary>
/// <param name="a">第一个浮点数</param>
/// <param name="b">第二个浮点数</param>
/// <param name="eps">指定的精度</param>
/// <returns>如果两个浮点数的差的绝对值小于指定的精度,则返回 true;否则返回 false</returns>
public static bool ApproxEqual(double a, double b, double eps)

# Factorial-求一个整数的阶乘

/// <summary>
/// 求一个整数的阶乘
/// </summary>
/// <param name="n">要求阶乘的整数</param>
/// <returns>阶乘结果</returns>
public static int Factorial(int n)

# Fibonacci-求一个整数的斐波那契数列的值

/// <summary>
/// 求一个整数的斐波那契数列的值
/// </summary>
/// <param name="n">要求斐波那契数列的整数</param>
/// <returns>斐波那契数列的值</returns>
public static int Fibonacci(int n)

# CountBits-求一个整数的二进制表示中 1 的个数

/// <summary>
/// 求一个整数的二进制表示中 1 的个数
/// </summary>
/// <param name="n">要求二进制表示中 1 的个数的整数</param>
/// <returns>二进制表示中 1 的个数</returns>
public static int CountBits(int n)

# Average-求两个浮点数的平均值

/// <summary>
/// 求两个浮点数的平均值
/// </summary>
/// <param name="a">第一个浮点数</param>
/// <param name="b">第二个浮点数</param>
/// <returns>两个浮点数的平均值</returns>
public static double Average(double a, double b)

# Median-求两个浮点数的中位数

/// <summary>
/// 求两个浮点数的中位数
/// </summary>
/// <param name="a">第一个浮点数</param>
/// <param name="b">第二个浮点数</param>
/// <returns>两个浮点数的中位数</returns>
public static double Median(double a, double b)

# Pow-计算 n 的 k 次方

/// <summary>
/// 计算 n 的 k 次方
/// </summary>
/// <param name="n">底数</param>
/// <param name="k">指数</param>
/// <returns>n 的 k 次方</returns>
public static int Pow(int n, int k)

# IsPerfectSquare-判断一个整数是否为完全平方数

/// <summary>
/// 判断一个整数是否为完全平方数
/// </summary>
/// <param name="n">要判断的整数</param>
/// <returns>如果是完全平方数,则返回 true;否则返回 false</returns>
public static bool IsPerfectSquare(int n)

# IsHappyNumber-计算一个整数的各个数位上数字的平方和

/// <summary>
/// 计算一个整数的各个数位上数字的平方和,如果结果为 1,则返回 true;否则进行下一次计算,直到结果为 1 或者进入死循环为止
/// </summary>
/// <param name="n">要计算的整数</param>
/// <returns>如果结果为 1,则返回 true;否则返回 false</returns>
public static bool IsHappyNumber(int n)

# HammingDistance-计算两个整数的二进制表示中有多少位不同

/// <summary>
/// 计算两个整数的二进制表示中有多少位不同
/// </summary>
/// <param name="a">第一个整数</param>
/// <param name="b">第二个整数</param>
/// <returns>两个整数的二进制表示中有多少位不同</returns>
public static int HammingDistance(int a, int b)

# GetAllFactors-求一个整数的所有因子

/// <summary>
/// 求一个整数的所有因子
/// </summary>
/// <param name="n">要求因子的整数</param>
/// <returns>所有因子</returns>
public static int[] GetAllFactors(int n)

# Add-计算两个整数的和

/// <summary>
/// 计算两个整数的和,如果结果溢出了 int 类型的取值范围,则返回 int.MaxValue
/// </summary>
/// <param name="a">第一个整数</param>
/// <param name="b">第二个整数</param>
/// <returns>两个整数的和,如果结果溢出了 int 类型的取值范围,则返回 int.MaxValue</returns>
public static int Add(int a, int b)

# 代码示例

using System;

class Program
{
    static void Main(string[] args)
    {
        // 求最大公约数
        int gcd = MathUtil.Gcd(24, 36);
        Console.WriteLine("24 和 36 的最大公约数为:" + gcd);

        // 求最小公倍数
        int lcm = MathUtil.Lcm(24, 36);
        Console.WriteLine("24 和 36 的最小公倍数为:" + lcm);

        // 判断质数
        bool isPrime = MathUtil.IsPrime(17);
        Console.WriteLine("17 是否为质数:" + isPrime);

        // 判断浮点数是否相等
        bool approxEqual = MathUtil.ApproxEqual(0.1 + 0.2, 0.3, 0.0001);
        Console.WriteLine("0.1 + 0.2 是否等于 0.3:" + approxEqual);

        // 求阶乘
        int factorial = MathUtil.Factorial(5);
        Console.WriteLine("5 的阶乘为:" + factorial);

        // 求斐波那契数列
        int fibonacci = MathUtil.Fibonacci(5);
        Console.WriteLine("斐波那契数列的第 5 项为:" + fibonacci);

        // 求二进制中 1 的个数
        int countBits = MathUtil.CountBits(7);
        Console.WriteLine("7 的二进制中有 " + countBits + " 个 1");

        // 求平均数
        double average = MathUtil.Average(3.5, 4.5);
        Console.WriteLine("3.5 和 4.5 的平均数为:" + average);

        // 求中位数
        double median = MathUtil.Median(3.5, 4.5);
        Console.WriteLine("3.5 和 4.5 的中位数为:" + median);

        // 求幂
        int pow = MathUtil.Pow(2, 10);
        Console.WriteLine("2 的 10 次方为:" + pow);

        // 判断完全平方数
        bool isPerfectSquare = MathUtil.IsPerfectSquare(16);
        Console.WriteLine("16 是否为完全平方数:" + isPerfectSquare);

        // 判断快乐数
        bool isHappyNumber = MathUtil.IsHappyNumber(19);
        Console.WriteLine("19 是否为快乐数:" + isHappyNumber);

        // 计算二进制中不同的位数
        int hammingDistance = MathUtil.HammingDistance(1, 4);
        Console.WriteLine("1 和 4 的二进制中有 " + hammingDistance + " 位不同");

        // 求因子
        int[] factors = MathUtil.GetAllFactors(12);
        Console.Write("12 的所有因子为:");
        foreach (int factor in factors)
        {
            Console.Write(factor + " ");
        }
        Console.WriteLine();

        // 求和
        int sum = MathUtil.Add(int.MaxValue - 1, 1);
        Console.WriteLine("int.MaxValue - 1 + 1 = " + sum);
    }
}
上次更新: 2023/04/26, 22:10:06
字符串切割-StrSplitter
数据预测-PredictUtil

← 字符串切割-StrSplitter 数据预测-PredictUtil→

Theme by Vdoing | Copyright © 2019-2024 一个大西瓜 | MIT License | 苏ICP备2023013501号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式