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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}
}
}