You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

154 lines
4.3 KiB
C#

9 months ago
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace JwKdsV.Core.Utils
{
public class DecimalUtils
{
public static int GetInt(object obj)
{
return GetInt(obj, 0);
}
public static int GetInt(object obj, int defaultValue)
{
int _value = defaultValue;
int.TryParse((obj != null ? obj.ToString() : defaultValue.ToString()), out _value);
return _value;
}
public static double GetDouble(object obj)
{
return GetDouble(obj, 0);
}
public static double GetDouble(object obj, double defaultValue)
{
double _value = defaultValue;
double.TryParse((obj != null ? obj.ToString() : defaultValue.ToString()), out _value);
return _value;
}
public static decimal GetDecimal(object obj)
{
return GetDecimal(obj, 0);
}
public static decimal GetDecimal(object obj, decimal defaultValue)
{
decimal _value = defaultValue;
decimal.TryParse((obj != null ? obj.ToString() : defaultValue.ToString()), out _value);
return _value;
}
/// <summary>
/// 保留两位小数,四舍五入
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static decimal Random(decimal value)
{
return Math.Round(value, Constant.POINTNUM, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 指定保存小数位数,四舍五入
/// </summary>
/// <param name="value"></param>
/// <param name="pointNum"></param>
/// <returns></returns>
public static decimal Random(decimal value, int pointNum)
{
return Math.Round(value, pointNum, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 指定位数的数字格式化size支持0、1、2
/// </summary>
/// <param name="size"></param>
/// <param name="num"></param>
/// <returns></returns>
public static string FormatDataSwitch(decimal num, int size)
{
string result = "";
switch (size)
{
case 0:
result = FormatDataNoPoint(num);
break;
case 1:
result = FormatDataOnePoint(num);
break;
case 2:
result = FormatDataDoublePoint(num);
break;
}
return result;
}
/// <summary>
/// 格式化为无小数
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public static string FormatDataNoPoint(decimal num)
{
return FormatData(num, "0.##");
}
/// <summary>
/// 格式化为1位小数
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public static string FormatDataOnePoint(decimal num)
{
return FormatData(num, "0.0#");
}
/// <summary>
/// 格式化为2位小数
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public static string FormatDataDoublePoint(decimal num)
{
return FormatData(num, "f2");
}
/// <summary>
/// 指定格式的数字格式化
/// </summary>
/// <param name="num"></param>
/// <param name="format"></param>
/// <returns></returns>
public static string FormatData(decimal num, string format)
{
return num.ToString(format);
}
/// <summary>
/// 金额分转元
/// </summary>
/// <param name="amount"></param>
/// <returns></returns>
public static decimal Fen2Yuan(object amount)
{
return Fen2Yuan(GetDecimal(amount));
}
/// <summary>
/// 金额分转元
/// </summary>
/// <param name="amount"></param>
/// <returns></returns>
public static decimal Fen2Yuan(decimal amount)
{
return amount / 100;
}
}
}