BOB/Command/CommandMath.cs

474 lines
19 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Common.Attributes;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Command
{
public enum ComparisonFuncEnum
{
Big,
BigOrEqual,
Small,
SmallOrEqual,
Equal,
NotEqual
}
[ATSCommand]
public static class CommandMath
{
#region Double类型数据
/// <summary>
/// 两数相加(Param1 + Param2)
/// </summary>
/// <param name="Param1">传入值实数1</param>
/// <param name="Param2">传入值实数2</param>
/// <example>Param1:9 Param2:2 返回值:11</example>
/// <returns></returns>
public static double ParamAdd(double Param1, double Param2)
{
return Param1 + Param2;
}
/// <summary>
/// 两数相减(Param1 - Param2)
/// </summary>
/// <param name="Param1">传入值实数1</param>
/// <param name="Param2">传入值实数2</param>
/// <example>Param1:9 Param2:2 返回值:7</example>
/// <returns></returns>
public static double ParamReduce(double Param1, double Param2)
{
return Param1 - Param2;
}
/// <summary>
/// 两数相乘(Param1 * Param2)
/// </summary>
/// <param name="Param1">传入值实数1</param>
/// <param name="Param2">传入值实数2</param>
/// <example>Param1:9 Param2:2 返回值:18</example>
/// <returns></returns>
public static double ParamMult(double Param1, double Param2)
{
return Param1 * Param2;
}
/// <summary>
/// 两数相除(Param1 / Param2)
/// </summary>
/// <param name="Param1">传入值实数1</param>
/// <param name="Param2">传入值实数2</param>
/// <param name="Param3">传入值:保留几位小数</param>
/// <example>Param1:10 Param2:3 Param3:3 返回值3.333</example>
/// <example>Param1:11 Param2:3 Param3:2 返回值3.67</example>
/// <returns></returns>
public static double ParamDivide(double Param1, double Param2, int Param3)
{
return Math.Round((Param1 / Param2), Param3);
}
/// <summary>
/// 两数相除求余(Param1 % Param2)
/// </summary>
/// <param name="Param1">传入值实数1</param>
/// <param name="Param2">传入值实数2</param>
/// <example>Param1:9 Param2:2 返回值:1</example>
/// <returns></returns>
public static double ParamRemainder(double Param1, double Param2)
{
return Param1 % Param2;
}
/// <summary>
/// 实数开根号
/// </summary>
/// <param name="Param1">传入值实数1</param>
/// <example>Param1:16 返回值4</example>
/// <returns></returns>
public static double ParamSquareRoot(double Param1)
{
return Math.Sqrt(Param1);
}
/// <summary>
/// 实数的幂运算
/// </summary>
/// <param name="Param1">传入值实数1</param>
/// <param name="Param2">传入值实数1需要做几次方</param>
/// <example>Param1:3 Param22 返回值9</example>
/// <example>Param1:2 Param23 返回值8</example>
/// <example>Param1:5 Param24 返回值625</example>
/// <returns></returns>
public static double ParamPow(double Param1, double Param2)
{
return Math.Pow(Param1, Param2);
}
/// <summary>
/// 实数的绝对值
/// </summary>
/// <param name="Param1">传入值实数1</param>
/// <example>Param1:-3.7 返回值3.7</example>
/// <returns></returns>
public static double ParamAbs(double Param1)
{
return Math.Abs(Param1);
}
/// <summary>
/// 实数的向下取整
/// </summary>
/// <param name="Param1">传入值实数1</param>
/// <example>Param1:3.7 返回值3</example>
/// <returns></returns>
public static double ParamFloor(double Param1)
{
return Math.Floor(Param1);
}
/// <summary>
/// 实数的向上取整
/// </summary>
/// <param name="Param1">传入值实数1</param>
/// <example>Param1:3.7 返回值4</example>
/// <returns></returns>
public static double ParamCeiling(double Param1)
{
return Math.Ceiling(Param1);
}
#endregion
#region String类型的数据
/// <summary>
/// A与B转换为double后比较,返回A比较B的结果
/// </summary>
/// <param name="a">比较数1</param>
/// <param name="b">比较数2</param>
/// <param name="比较方法">比较方法</param>
/// <returns>返回A比较B</returns>
public static bool Comparison(string a, string b, ComparisonFuncEnum )
{
var aa = Convert.ToDouble(a);
var bb = Convert.ToDouble(b);
switch ()
{
case ComparisonFuncEnum.Big:
return aa > bb;
case ComparisonFuncEnum.BigOrEqual:
return aa >= bb;
case ComparisonFuncEnum.Small:
return aa < bb;
case ComparisonFuncEnum.SmallOrEqual:
return aa <= bb;
case ComparisonFuncEnum.Equal:
return aa == bb;
case ComparisonFuncEnum.NotEqual:
return aa != bb;
default:
return false;
}
}
/// <summary>
/// 加法指令,转换为double后返回o1+o2
/// </summary>
/// <param name="o1">运算数1</param>
/// <param name="o2">运算数2</param>
/// <returns>返回o1+o2</returns>
public static string TwoNumberAdd(string o1, string o2)
{
return (Convert.ToDecimal(o1) + Convert.ToDecimal(o2)).ToString();
}
/// <summary>
/// 减法指令,转换为double后返回o1-o2
/// </summary>
/// <param name="o1">运算数1</param>
/// <param name="o2">运算数2</param>
/// <returns>返回o1-o2</returns>
public static string TwoNumberReduce(string o1, string o2)
{
return (Convert.ToDecimal(o1) - Convert.ToDecimal(o2)).ToString();
}
/// <summary>
/// 乘法指令,转换为double后返回o1*o2
/// </summary>
/// <param name="o1">运算数1</param>
/// <param name="o2">运算数2</param>
/// <returns>返回o1*o2</returns>
public static string TwoNumberMult(string o1, string o2)
{
return (Convert.ToDecimal(o1) * Convert.ToDecimal(o2)).ToString();
}
/// <summary>
/// 除法指令,转换为double后返回o1/o2
/// </summary>
/// <param name="o1">运算数1</param>
/// <param name="o2">运算数2</param>
/// <returns>返回o1/o2</returns>
public static string TwoNumberDivide1(string o1, string o2)
{
return (Convert.ToDecimal(o1) / Convert.ToDecimal(o2)).ToString();
}
/// <summary>
/// 转换为double后返回o1/o2
/// </summary>
/// <param name="o1">运算数1</param>
/// <param name="o2">运算数2</param>
/// <param name="o3">保留几位小数</param>
/// <returns>返回o1/o2</returns>
public static string TwoNumberDivide2(string o1, string o2, int o3)
{
return (Math.Round((Convert.ToDecimal(o1) / Convert.ToDecimal(o2)), o3)).ToString();
}
/// <summary>
/// 返回o1%o2
/// </summary>
/// <param name="o1">运算数1</param>
/// <param name="o2">运算数2</param>
/// <returns>返回o1%o2</returns>
public static string TwoNumberRemainder(string o1, string o2)
{
return (Convert.ToDecimal(o1) % (Convert.ToDecimal(o2))).ToString();
}
/// <summary>
/// 计算两个数字的平方。
/// </summary>
/// <param name="o1">第一个数字的字符串表示。</param>
/// <param name="o2">第二个数字的字符串表示。</param>
/// <example>Param1:3 Param22 返回值9</example>
/// <example>Param1:2 Param23 返回值8</example>
/// <example>Param1:5 Param24 返回值625</example>
/// <returns>返回两个数字的平方的字符串表示。</returns>
public static string NumberPow(string o1, string o2)
{
// 将输入的字符串转换为双精度浮点数,并计算它们的平方
// 最后将结果转换为字符串并返回
return Math.Pow(Convert.ToDouble(o1), Convert.ToDouble(o2)).ToString();
}
/// <summary>
/// 计算一个数的平方根。
/// </summary>
/// <param name="o1">要计算平方根的数字的字符串表示。</param>
/// <returns>返回输入数字的平方根的字符串表示。</returns>
public static string NumberSqrt(string o1)
{
// 将输入的字符串转换为双精度浮点数,并计算其平方根。
// 最后将结果转换为字符串并返回。
return Math.Sqrt(Convert.ToDouble(o1)).ToString();
}
/// <summary>
/// 计算一个数的绝对值。
/// </summary>
/// <param name="o1">要计算绝对值的数字的字符串表示。</param>
/// <returns>返回输入数字的绝对值的字符串表示。</returns>
public static string NumberAbs(string o1)
{
// 将输入的字符串转换为双精度浮点数,并计算其绝对值。
// 最后将结果转换为字符串并返回。
return Math.Abs(Convert.ToDouble(o1)).ToString();
}
/// <summary>
/// 计算一个角度的正弦值。
/// </summary>
/// <param name="o1">要计算正弦值的角度的字符串表示(单位为弧度)。</param>
/// <returns>返回输入角度的正弦值的字符串表示。</returns>
public static string NumberSin(string o1)
{
// 将输入的字符串转换为双精度浮点数,并计算其正弦值。
// 最后将结果转换为字符串并返回。
return Math.Sin(Convert.ToDouble(o1)).ToString();
}
/// <summary>
/// 计算一个角度的余弦值。
/// </summary>
/// <param name="o1">要计算余弦值的角度的字符串表示(单位为弧度)。</param>
/// <returns>返回输入角度的余弦值的字符串表示。</returns>
public static string NumberCos(string o1)
{
// 将输入的字符串转换为双精度浮点数,并计算其余弦值。
// 最后将结果转换为字符串并返回。
return Math.Cos(Convert.ToDouble(o1)).ToString();
}
/// <summary>
/// 计算一个角度的正切值。
/// </summary>
/// <param name="o1">要计算正切值的角度的字符串表示(单位为弧度)。</param>
/// <returns>返回输入角度的正切值的字符串表示。</returns>
public static string NumberTan(string o1)
{
// 将输入的字符串转换为双精度浮点数,并计算其正切值。
// 最后将结果转换为字符串并返回。
return Math.Tan(Convert.ToDouble(o1)).ToString();
}
/// <summary>
/// 计算一个数的反正弦值。
/// </summary>
/// <param name="o1">要计算反正弦值的数的字符串表示。</param>
/// <returns>返回输入数的反正弦值的字符串表示(单位为弧度)。</returns>
public static string NumberASin(string o1)
{
// 将输入的字符串转换为双精度浮点数,并计算其反正弦值。
// 最后将结果转换为字符串并返回。
return Math.Asin(Convert.ToDouble(o1)).ToString();
}
/// <summary>
/// 计算一个数的反余弦值。
/// </summary>
/// <param name="o1">要计算反余弦值的数的字符串表示。</param>
/// <returns>返回输入数的反余弦值的字符串表示(单位为弧度)。</returns>
public static string NumberACos(string o1)
{
// 将输入的字符串转换为双精度浮点数,并计算其反余弦值。
// 最后将结果转换为字符串并返回。
return Math.Acos(Convert.ToDouble(o1)).ToString();
}
/// <summary>
/// 计算一个数的反正切值。
/// </summary>
/// <param name="o1">要计算反正切值的数的字符串表示。</param>
/// <returns>返回输入数的反正切值的字符串表示(单位为弧度)。</returns>
public static string NumberATan(string o1)
{
// 将输入的字符串转换为双精度浮点数,并计算其反正切值。
// 最后将结果转换为字符串并返回。
return Math.Atan(Convert.ToDouble(o1)).ToString();
}
/// <summary>
/// 计算 e 的给定次幂。
/// </summary>
/// <param name="o1">e 的指数的字符串表示。</param>
/// <returns>返回 e 的给定次幂的字符串表示。</returns>
public static string eIndex(string o1)
{
// 将输入的字符串转换为双精度浮点数,并计算 e 的给定次幂。
// 最后将结果转换为字符串并返回。
return Math.Exp(Convert.ToDouble(o1)).ToString();
}
/// <summary>
/// 计算一个数的自然对数。
/// </summary>
/// <param name="o1">要计算自然对数的数的字符串表示。</param>
/// <returns>返回输入数的自然对数的字符串表示。</returns>
public static string NumberNaturalLogarithm(string o1)
{
// 将输入的字符串转换为双精度浮点数,并计算其自然对数。
// 最后将结果转换为字符串并返回。
return Math.Log(Convert.ToDouble(o1)).ToString();
}
/// <summary>
/// 计算一个数在指定基数下的对数。
/// </summary>
/// <param name="o1">要计算对数的数的字符串表示。</param>
/// <param name="Base">对数的基数的字符串表示。</param>
/// <returns>返回输入数在指定基数下的对数的字符串表示。</returns>
public static string NumberLogarithm(string o1, string Base)
{
// 将输入的字符串转换为双精度浮点数,并计算其在指定基数下的对数。
// 最后将结果转换为字符串并返回。
return Math.Log(Convert.ToDouble(o1), Convert.ToDouble(Base)).ToString();
}
/// <summary>
/// 对输入数字进行四舍五入取整。
/// </summary>
/// <param name="n1">要进行取整操作的数字的字符串表示。</param>
/// <returns>返回经过四舍五入取整后的结果的字符串表示。</returns>
public static string NumberRoundToNearest(string n1)
{
// 将输入的字符串转换为双精度浮点数,并进行四舍五入取整。
// 最后将结果转换为字符串并返回。
return Math.Round(Convert.ToDouble(n1)).ToString();
}
/// <summary>
/// 对输入数字进行向上舍入取整。
/// </summary>
/// <param name="n1">要进行取整操作的数字的字符串表示。</param>
/// <returns>返回经过向上舍入取整后的结果的字符串表示。</returns>
public static string NumberRoundUp(string n1)
{
// 将输入的字符串转换为双精度浮点数,并进行向上舍入取整。
// 最后将结果转换为字符串并返回。
return Math.Ceiling(Convert.ToDouble(n1)).ToString();
}
/// <summary>
/// 对输入数字进行向下舍入取整。
/// </summary>
/// <param name="n1">要进行取整操作的数字的字符串表示。</param>
/// <returns>返回经过向下舍入取整后的结果的字符串表示。</returns>
public static string NumberRoundDown(string n1)
{
// 将输入的字符串转换为双精度浮点数,并进行向下舍入取整。
// 最后将结果转换为字符串并返回。
return Math.Floor(Convert.ToDouble(n1)).ToString();
}
/// <summary>
/// 获取圆周率π的字符串表示。
/// </summary>
/// <returns>返回圆周率π的字符串表示。</returns>
public static string PI()
{
// 返回圆周率π的字符串表示。
return Math.PI.ToString();
}
//public static Random random1 = new Random();
/// <summary>
/// 生成一个随机整数。
/// </summary>
/// <returns>返回生成的随机整数的字符串表示。</returns>
public static string RandomNumber_Int()
{
Random random = new Random();
// 使用随机数生成器生成一个随机整数,并将其转换为字符串表示。
return random.Next().ToString();
}
/// <summary>
/// 生成一个指定范围内的随机整数。
/// </summary>
/// <param name="最小">随机数生成范围的最小值。</param>
/// <param name="最大">随机数生成范围的最大值(不包含)。</param>
/// <returns>返回生成的指定范围内的随机整数的字符串表示。</returns>
public static string RandomNumber_RangeInt(int , int )
{
Random random = new Random();
// 使用随机数生成器生成一个指定范围内的随机整数,并将其转换为字符串表示。
return random.Next(, ).ToString();
}
/// <summary>
/// 生成一个随机小数。
/// </summary>
/// <returns>返回生成的随机小数的字符串表示。</returns>
public static string RandomNumber_Decimal()
{
Random random = new Random();
// 使用随机数生成器生成一个随机小数,并将其转换为字符串表示。
return random.NextDouble().ToString();
}
/// <summary>
/// 计算给定算式的结果。
/// </summary>
/// <param name="s">要计算的算式的字符串表示。</param>
/// <returns>返回计算结果的字符串表示。</returns>
public static string FormulaCalculation(string s)
{
// 创建一个 DataTable 实例来进行算式的计算。
DataTable dataTable = new DataTable();
// 使用 DataTable 的 Compute 方法计算给定的算式,并将结果转换为字符串表示。
return dataTable.Compute(s, "").ToString();
}
#endregion
}
}