DoubleExtensions
DoubleExtensions 功能文档
Section titled “DoubleExtensions 功能文档”DoubleExtensions 是一个静态扩展类,为 double 类型提供了丰富的扩展方法,涵盖数值判断、转换、运算、格式化等功能,旨在简化 double 类型的数学运算和格式化处理,特别适合科学计算、工程计算等场景。
主要功能模块
Section titled “主要功能模块”1. 基础判断
Section titled “1. 基础判断”提供 double 数值状态相关的数据判断方法。
IsZero
Section titled “IsZero”判断 double 是否为零。
public static bool IsZero(this double value)参数:
value: 待判断的 double
返回值:
- 如果值为零返回 true;否则返回 false
示例:
double value1 = 0d;double value2 = 123.45d;
bool result1 = value1.IsZero(); // truebool result2 = value2.IsZero(); // falseIsPositive
Section titled “IsPositive”判断 double 是否为正数。
public static bool IsPositive(this double value)参数:
value: 待判断的 double
返回值:
- 如果值大于零返回 true;否则返回 false
示例:
double value1 = 123.45d;double value2 = -123.45d;
bool result1 = value1.IsPositive(); // truebool result2 = value2.IsPositive(); // falseIsNegative
Section titled “IsNegative”判断 double 是否为负数。
public static bool IsNegative(this double value)参数:
value: 待判断的 double
返回值:
- 如果值小于零返回 true;否则返回 false
示例:
double value1 = -123.45d;double value2 = 123.45d;
bool result1 = value1.IsNegative(); // truebool result2 = value2.IsNegative(); // falseIsInteger
Section titled “IsInteger”判断 double 是否为整数(无小数部分)。
public static bool IsInteger(this double value)参数:
value: 待判断的 double
返回值:
- 如果值为整数返回 true;否则返回 false
示例:
double value1 = 123d;double value2 = 123.45d;
bool result1 = value1.IsInteger(); // truebool result2 = value2.IsInteger(); // falseIsEven
Section titled “IsEven”判断 double 是否为偶数(仅整数时有效)。
public static bool IsEven(this double value)参数:
value: 待判断的 double
返回值:
- 如果是偶数返回 true;否则返回 false
示例:
double value1 = 4d;double value2 = 5d;double value3 = 4.5d;
bool result1 = value1.IsEven(); // truebool result2 = value2.IsEven(); // falsebool result3 = value3.IsEven(); // false(非整数)判断 double 是否为奇数(仅整数时有效)。
public static bool IsOdd(this double value)参数:
value: 待判断的 double
返回值:
- 如果是奇数返回 true;否则返回 false
示例:
double value1 = 5d;double value2 = 4d;double value3 = 5.5d;
bool result1 = value1.IsOdd(); // truebool result2 = value2.IsOdd(); // falsebool result3 = value3.IsOdd(); // false(非整数)2. 特殊值判断
Section titled “2. 特殊值判断”提供 double 特殊值(NaN、无穷大)相关的判断方法。
判断 double 是否为 NaN(非数字)。
public static bool IsNaN(this double value)参数:
value: 待判断的 double
返回值:
- 如果值为 NaN 返回 true;否则返回 false
示例:
double value1 = double.NaN;double value2 = 123.45d;
bool result1 = value1.IsNaN(); // truebool result2 = value2.IsNaN(); // falseIsInfinity
Section titled “IsInfinity”判断 double 是否为无穷大(正无穷或负无穷)。
public static bool IsInfinity(this double value)参数:
value: 待判断的 double
返回值:
- 如果值为无穷大返回 true;否则返回 false
示例:
double value1 = double.PositiveInfinity;double value2 = 123.45d;
bool result1 = value1.IsInfinity(); // truebool result2 = value2.IsInfinity(); // falseIsPositiveInfinity
Section titled “IsPositiveInfinity”判断 double 是否为正无穷。
public static bool IsPositiveInfinity(this double value)参数:
value: 待判断的 double
返回值:
- 如果值为正无穷返回 true;否则返回 false
示例:
double value1 = double.PositiveInfinity;double value2 = double.NegativeInfinity;
bool result1 = value1.IsPositiveInfinity(); // truebool result2 = value2.IsPositiveInfinity(); // falseIsNegativeInfinity
Section titled “IsNegativeInfinity”判断 double 是否为负无穷。
public static bool IsNegativeInfinity(this double value)参数:
value: 待判断的 double
返回值:
- 如果值为负无穷返回 true;否则返回 false
示例:
double value1 = double.NegativeInfinity;double value2 = double.PositiveInfinity;
bool result1 = value1.IsNegativeInfinity(); // truebool result2 = value2.IsNegativeInfinity(); // falseIsValid
Section titled “IsValid”判断 double 是否为有效数值(非 NaN 且非无穷大)。
public static bool IsValid(this double value)参数:
value: 待判断的 double
返回值:
- 如果值为有效数值返回 true;否则返回 false
示例:
double value1 = 123.45d;double value2 = double.NaN;double value3 = double.PositiveInfinity;
bool result1 = value1.IsValid(); // truebool result2 = value2.IsValid(); // falsebool result3 = value3.IsValid(); // false3. 范围判断
Section titled “3. 范围判断”提供数值范围相关的判断和约束功能。
IsBetween
Section titled “IsBetween”判断 double 是否在指定范围内(包含边界)。
public static bool IsBetween(this double value, double min, double max)参数:
value: 待判断的 doublemin: 最小值max: 最大值
返回值:
- 如果值在范围内返回 true;否则返回 false
示例:
double value = 50d;
bool result1 = value.IsBetween(0d, 100d); // truebool result2 = value.IsBetween(60d, 100d); // falseIsInRange
Section titled “IsInRange”判断 double 是否在指定范围内(包含边界)。
public static bool IsInRange(this double value, double min, double max)参数:
value: 待判断的 doublemin: 最小值max: 最大值
返回值:
- 如果值在范围内返回 true;否则返回 false
示例:
double value = 50d;bool result = value.IsInRange(0d, 100d); // true将 double 限制在指定范围内,超出则取边界值。
public static double Clamp(this double value, double min, double max)参数:
value: 待处理的 doublemin: 最小值max: 最大值
返回值:
- 限制后的值
示例:
double value1 = 150d;double value2 = 50d;double value3 = -10d;
double result1 = value1.Clamp(0d, 100d); // 100double result2 = value2.Clamp(0d, 100d); // 50double result3 = value3.Clamp(0d, 100d); // 04. 类型转换
Section titled “4. 类型转换”提供 double 与其他数值类型之间的转换。
将 double 转换为 int,四舍五入。
public static int ToInt(this double value)参数:
value: 待转换的 double
返回值:
- 转换后的 int 值
示例:
double value1 = 123.4d;double value2 = 123.5d;
int result1 = value1.ToInt(); // 123int result2 = value2.ToInt(); // 124ToLong
Section titled “ToLong”将 double 转换为 long,四舍五入。
public static long ToLong(this double value)参数:
value: 待转换的 double
返回值:
- 转换后的 long 值
示例:
double value = 123456789.5d;long result = value.ToLong(); // 123456790ToDecimal
Section titled “ToDecimal”将 double 转换为 decimal。
public static decimal ToDecimal(this double value)参数:
value: 待转换的 double
返回值:
- 转换后的 decimal 值
示例:
double value = 123.45d;decimal result = value.ToDecimal(); // 123.45mToFloat
Section titled “ToFloat”将 double 转换为 float。
public static float ToFloat(this double value)参数:
value: 待转换的 double
返回值:
- 转换后的 float 值
示例:
double value = 123.45d;float result = value.ToFloat(); // 123.45fToBool
Section titled “ToBool”将 double 转换为 bool(非零为 true)。
public static bool ToBool(this double value)参数:
value: 待转换的 double
返回值:
- 如果值非零返回 true;否则返回 false
示例:
double value1 = 0d;double value2 = 123.45d;
bool result1 = value1.ToBool(); // falsebool result2 = value2.ToBool(); // true5. 数学运算
Section titled “5. 数学运算”提供数值约束和数学计算功能。
将 double 四舍五入到指定小数位。
public static double Round(this double value, int digits = 2)参数:
value: 待处理的 doubledigits: 保留的小数位数,默认为 2
返回值:
- 四舍五入后的值
示例:
double value = 123.4567d;
double result1 = value.Round(); // 123.46double result2 = value.Round(3); // 123.457Truncate
Section titled “Truncate”将 double 截断到指定小数位(向零取整)。
public static double Truncate(this double value, int digits = 2)参数:
value: 待处理的 doubledigits: 保留的小数位数,默认为 2
返回值:
- 截断后的值
示例:
double value = 123.4567d;
double result1 = value.Truncate(); // 123.45double result2 = value.Truncate(3); // 123.456获取 double 的绝对值。
public static double Abs(this double value)参数:
value: 待处理的 double
返回值:
- 绝对值
示例:
double value1 = -123.45d;double value2 = 123.45d;
double result1 = value1.Abs(); // 123.45double result2 = value2.Abs(); // 123.45计算 double 的幂次方。
public static double Pow(this double value, double power)参数:
value: 底数power: 指数
返回值:
- 计算结果
示例:
double value = 2d;
double result1 = value.Pow(3); // 8double result2 = value.Pow(10); // 1024计算 double 的平方根。
public static double Sqrt(this double value)参数:
value: 待处理的 double
返回值:
- 平方根
示例:
double value = 16d;double result = value.Sqrt(); // 4Ceiling
Section titled “Ceiling”向上取整(天花板函数)。
public static double Ceiling(this double value)参数:
value: 待处理的 double
返回值:
- 向上取整后的值
示例:
double value1 = 123.1d;double value2 = 123.9d;
double result1 = value1.Ceiling(); // 124double result2 = value2.Ceiling(); // 124向下取整(地板函数)。
public static double Floor(this double value)参数:
value: 待处理的 double
返回值:
- 向下取整后的值
示例:
double value1 = 123.1d;double value2 = 123.9d;
double result1 = value1.Floor(); // 123double result2 = value2.Floor(); // 123计算 double 的符号。
public static int Sign(this double value)参数:
value: 待处理的 double
返回值:
- 如果值为正返回 1,为零返回 0,为负返回 -1
示例:
double value1 = 123.45d;double value2 = 0d;double value3 = -123.45d;
int result1 = value1.Sign(); // 1int result2 = value2.Sign(); // 0int result3 = value3.Sign(); // -1Log (自然对数)
Section titled “Log (自然对数)”计算 double 的自然对数。
public static double Log(this double value)参数:
value: 待处理的 double
返回值:
- 自然对数值
示例:
double value = Math.E;double result = value.Log(); // 1Log (指定底数)
Section titled “Log (指定底数)”计算 double 的指定底数的对数。
public static double Log(this double value, double newBase)参数:
value: 待处理的 doublenewBase: 对数的底数
返回值:
- 对数值
示例:
double value = 100d;double result = value.Log(10); // 2计算 double 的以 10 为底的对数。
public static double Log10(this double value)参数:
value: 待处理的 double
返回值:
- 以 10 为底的对数值
示例:
double value = 100d;double result = value.Log10(); // 2计算 e 的指定次幂。
public static double Exp(this double value)参数:
value: 指数
返回值:
- e 的 value 次幂
示例:
double value = 1d;double result = value.Exp(); // 2.71828182845905 (e)计算 double 的正弦值。
public static double Sin(this double value)参数:
value: 弧度值
返回值:
- 正弦值
示例:
double value = Math.PI / 2;double result = value.Sin(); // 1计算 double 的余弦值。
public static double Cos(this double value)参数:
value: 弧度值
返回值:
- 余弦值
示例:
double value = 0;double result = value.Cos(); // 1计算 double 的正切值。
public static double Tan(this double value)参数:
value: 弧度值
返回值:
- 正切值
示例:
double value = Math.PI / 4;double result = value.Tan(); // 16. 四则运算
Section titled “6. 四则运算”提供安全的四则运算方法。
double 加法。
public static double Add(this double value, double other)参数:
value: 第一个值other: 第二个值
返回值:
- 两数之和
示例:
double value = 100d;double result = value.Add(50d); // 150Subtract
Section titled “Subtract”double 减法。
public static double Subtract(this double value, double other)参数:
value: 第一个值other: 第二个值
返回值:
- 两数之差
示例:
double value = 100d;double result = value.Subtract(30d); // 70Multiply
Section titled “Multiply”double 乘法。
public static double Multiply(this double value, double other)参数:
value: 第一个值other: 第二个值
返回值:
- 两数之积
示例:
double value = 100d;double result = value.Multiply(1.5d); // 150DivideSafe
Section titled “DivideSafe”double 除法,除数为零时返回指定默认值。
public static double DivideSafe(this double value, double other, double defaultValue = 0d)参数:
value: 被除数other: 除数defaultValue: 除数为零时的默认返回值,默认为 0
返回值:
- 两数之商,或默认值
示例:
double value = 100d;
double result1 = value.DivideSafe(4d); // 25double result2 = value.DivideSafe(0d); // 0double 求余。
public static double Mod(this double value, double other)参数:
value: 被除数other: 除数
返回值:
- 余数,除数为零时返回 0
示例:
double value = 10d;double result = value.Mod(3d); // 17. 比较运算
Section titled “7. 比较运算”提供数值比较相关的方法。
获取两个 double 中的较大值。
public static double Max(this double value, double other)参数:
value: 第一个值other: 第二个值
返回值:
- 较大的值
示例:
double value = 100d;double result = value.Max(200d); // 200获取两个 double 中的较小值。
public static double Min(this double value, double other)参数:
value: 第一个值other: 第二个值
返回值:
- 较小的值
示例:
double value = 100d;double result = value.Min(200d); // 100AbsDiff
Section titled “AbsDiff”计算两个 double 的绝对差值。
public static double AbsDiff(this double value, double other)参数:
value: 第一个值other: 第二个值
返回值:
- 绝对差值
示例:
double value = 100d;double result = value.AbsDiff(130d); // 30EqualsTolerance
Section titled “EqualsTolerance”判断两个 double 是否在指定精度范围内相等。
public static bool EqualsTolerance(this double value, double other, double tolerance = 0.0001d)参数:
value: 第一个值other: 第二个值tolerance: 容差,默认为 0.0001
返回值:
- 如果差值小于容差返回 true;否则返回 false
示例:
double value1 = 1.00001d;double value2 = 1.00002d;
bool result = value1.EqualsTolerance(value2, 0.0001d); // true8. 格式化输出
Section titled “8. 格式化输出”提供将数值格式化为字符串的功能。
ToFixedString
Section titled “ToFixedString”将 double 转换为固定小数位字符串。
public static string ToFixedString(this double value, int digits = 2)参数:
value: 待处理的 doubledigits: 保留的小数位数,默认为 2
返回值:
- 格式化后的字符串
示例:
double value = 123.4567d;
string result1 = value.ToFixedString(); // "123.46"string result2 = value.ToFixedString(3); // "123.457"ToCurrencyString
Section titled “ToCurrencyString”将 double 转换为货币格式字符串。
public static string ToCurrencyString(this double value, string culture = "zh-CN")参数:
value: 待处理的 doubleculture: 区域信息,默认为 “zh-CN”
返回值:
- 货币格式字符串
示例:
double value = 1234.56d;
string result1 = value.ToCurrencyString(); // "¥1,234.56"string result2 = value.ToCurrencyString("en-US"); // "$1,234.56"ToPercentString
Section titled “ToPercentString”将 double 转换为百分比字符串。
public static string ToPercentString(this double value, int digits = 2)参数:
value: 待处理的 double(如 0.1234 表示 12.34%)digits: 保留的小数位数,默认为 2
返回值:
- 百分比字符串
示例:
double value = 0.1234d;string result = value.ToPercentString(); // "12.34%"ToScientificString
Section titled “ToScientificString”将 double 转换为科学计数法字符串。
public static string ToScientificString(this double value, int digits = 2)参数:
value: 待处理的 doubledigits: 保留的小数位数,默认为 2
返回值:
- 科学计数法字符串
示例:
double value = 1234567.89d;string result = value.ToScientificString(); // "1.23E+006"ToFriendlyString
Section titled “ToFriendlyString”将 double 转换为友好字符串(如 “1.23万”、“1.23亿”)。
public static string ToFriendlyString(this double value, int digits = 2)参数:
value: 待处理的 doubledigits: 保留的小数位数,默认为 2
返回值:
- 友好格式字符串
示例:
double value1 = 12345d;double value2 = 123456789d;
string result1 = value1.ToFriendlyString(); // "1.23万"string result2 = value2.ToFriendlyString(); // "1.23亿"ToThousandsString
Section titled “ToThousandsString”将 double 转换为带千分位的字符串。
public static string ToThousandsString(this double value, int digits = 2)参数:
value: 待处理的 doubledigits: 保留的小数位数,默认为 2
返回值:
- 带千分位的字符串
示例:
double value = 1234567.89d;string result = value.ToThousandsString(); // "1,234,567.89"9. 进制转换
Section titled “9. 进制转换”提供将数值转换为不同进制字符串的功能。
ToHexString
Section titled “ToHexString”将 double 的整数部分转换为十六进制字符串。
public static string ToHexString(this double value)参数:
value: 待转换的 double
返回值:
- 十六进制字符串
示例:
double value = 255d;string result = value.ToHexString(); // "FF"ToBinaryString
Section titled “ToBinaryString”将 double 的整数部分转换为二进制字符串。
public static string ToBinaryString(this double value)参数:
value: 待转换的 double
返回值:
- 二进制字符串
示例:
double value = 10d;string result = value.ToBinaryString(); // "1010"ToOctalString
Section titled “ToOctalString”将 double 的整数部分转换为八进制字符串。
public static string ToOctalString(this double value)参数:
value: 待转换的 double
返回值:
- 八进制字符串
示例:
double value = 64d;string result = value.ToOctalString(); // "100"- 科学计算 - 处理物理、化学、工程等领域的数值计算
- 数据展示 - 数值格式化显示,如货币、百分比、科学计数等格式
- 数据验证 - 数值范围检查和状态判断
- 数学运算 - 高级数学运算(三角函数、对数、指数等)
- 图形处理 - 坐标计算、角度转换等
- 类型转换 - double 与其他数值类型的安全转换
- 业务逻辑 - 数值状态判断(如正负、奇偶、整数等)
- 用户界面 - 提供友好的数值表示形式
- 所有方法都是扩展方法,需要通过
double实例调用 - 四舍五入方法使用
MidpointRounding.AwayFromZero策略,符合传统数学习惯 - double 类型存在精度问题,对于需要高精度的金融计算建议使用 decimal
- 除法运算提供安全版本
DivideSafe(),避免除零异常 - 进制转换方法仅处理整数部分,小数部分会被忽略
- 三角函数方法使用弧度制,不是角度制
- 特殊值判断方法(IsNaN、IsInfinity)用于处理计算结果异常情况
- 类型转换方法在转换前会进行四舍五入处理