计算公式
来源:互联网 发布:血腥爱情故事 知乎 编辑:程序博客网 时间:2024/04/28 02:40
开发经常碰到的一些转换计算问题方法
数据计算公式
private static final int DEF_DIV_SCALE = 10; //小数点后位数
private static DecimalFormat df = new DecimalFormat("##0.000000");
/**
* 字字符串转成BigDecimal 对象
* @param arg
* @return
*/
public static BigDecimal str2BigDecimal(String arg) {
BigDecimal v = new BigDecimal(0.00);
if (arg == null)
return v;
try {
v = new BigDecimal(arg);
} catch (Exception e) {
return v;
}
return v;
}
/**
* 提供精确的加法运算。
*
* @param v1
* 被加数
* @param v2
* 加数
* @return 两个参数的和
*/
public static double add(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
/**
* 提供字符串型数值相加的计算
* @param v1
* @param v2
* @return
*/
public static String add(String v1, String v2) {
BigDecimal b1 = str2BigDecimal(v1);
BigDecimal b2 = str2BigDecimal(v2);
return b1.add(b2).toString();
}
/**
* 提供精确的减法运算。
*
* @param v1
* 被减数
* @param v2
* 减数
* @return 两个参数的差
*/
public static double sub(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
/**
* 提供字符串型数值相减的计算
* @param v1
* @param v2
* @return
*/
public static String sub(String v1,String v2){
BigDecimal b1 = str2BigDecimal(v1);
BigDecimal b2 = str2BigDecimal(v2);
return b1.subtract(b2).toString();
}
/**
* 提供精确的乘法运算。
*
* @param v1
* 被乘数
* @param v2
* 乘数
* @return 两个参数的积
*/
public static double mul(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
/**
* 提供两个字符串精确的乘法运算。
*
* @param v1
* 被乘数
* @param v2
* 乘数
* @return 两个参数的积
*/
public static String mul(String v1,String v2){
BigDecimal b1 = str2BigDecimal(v1);
BigDecimal b2 = str2BigDecimal(v2);
return b1.multiply(b2).toString();
}
/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。
*
* @param v1
* 被除数
* @param v2
* 除数
* @param scale
* 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
* @throws IllegalArgumentException
*/
public static String div(String v1,String v2){
BigDecimal b1 = str2BigDecimal(v1);
BigDecimal b2 = str2BigDecimal(v2);
return b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP).toString();
}
/**
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后10位,以后的数字四舍五入。
*
* @param v1
* 被除数
* @param v2
* 除数
* @return 两个参数的商
*/
public static double div(double v1, double v2) {
return div(v1, v2, DEF_DIV_SCALE);
}
/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。
*
* @param v1
* 被除数
* @param v2
* 除数
* @param scale
* 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
* @throws IllegalArgumentException
*/
public static double div(double v1, double v2, int scale) {
if (scale < 0) {
return 0;
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 提供精确的小数位四舍五入处理。
*
* @param v
* 需要四舍五入的数字
* @param scale
* 小数点后保留几位
* @return 四舍五入后的结果
*/
public static double round(double v, int scale) {
if (scale < 0) {
return 0;
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 四舍五入保留两位小数
* @param v
* @return
*/
public static String round(String v){
BigDecimal b=str2BigDecimal(v);
BigDecimal one = new BigDecimal("1");
return b.divide(one, 2, BigDecimal.ROUND_HALF_UP).toString();
}
日期计算公式
/**
* 把日期格式 20080131转换成 2008-01-31格式字符串
*
* @param strDate
* @return
*/
public static String getDateFormatStr(String strDate) {
String str = "";
if ("".equals(strDate) || strDate.length() != 8) {
return str;
}
str = strDate.substring(0, 4) + "-" + strDate.substring(4, 6) + "-"
+ strDate.substring(6, 8);
return str;
}
/**
* <p>
* 计算两个日期之间的差额天数
* </p>
*
* @return
*/
public static long getDifferenceDays(Date startDate, Date endDate) {
long diffDays = 0;
diffDays = endDate.getTime() - startDate.getTime();
if (diffDays < 0) {
return 0;
}
// 整除一天的微秒数,计算的天数恰好
diffDays = diffDays / 1000 / 60 / 60 / 24;
return diffDays;
}
/**
* 在指定的基准日期上增加一天
*
* @param date
* 基准日期
* @return 增加一天后的日期
*/
public static Date incDay(Date date) {
return addDay(date, 1);
}
/**
* 在指定的基准日期上增加(或减少)指定的天数
*
* @param date
* 基准日期
* @param days
* 天数(负数则为减少)
* @return 增加一天后的日期
*/
public static Date addDay(Date date, int days) {
Calendar calArg = Calendar.getInstance();
calArg.setTime(date);
calArg.add(Calendar.DATE, days);
return calArg.getTime();
}
0 0
- 计算公式
- 计算公式
- 排列组合公式/排列组合计算公式
- 排列组合公式/排列组合计算公式
- 排列组合公式/排列组合计算公式
- 基姆拉尔森计算公式计算日期
- 基姆拉尔森计算公式计算星期
- SQLSERVER的公式计算
- 三维圆环计算公式
- 浮动公式计算
- 排列组合计算公式
- 微带线计算公式
- 字符串计算公式(zz)
- 排列组合计算公式
- 简单PV计算公式
- 基姆拉尔森计算公式
- 人月的计算公式
- 个人所得税计算公式
- 如何成为一名优秀的CTO
- 树莓派最新sudo rasp-config 系统设置 时间 全屏设置
- 如何通过Tesseract开源OCR引擎创建Android OCR应用
- VB中求Val("&H ffff")的返回值
- ListView通用适配器
- 计算公式
- EaseType效果直观展示
- 关于for循环的细节问题
- java初始化机制(二)
- Tor 1
- maven 添加本地jar
- Windows 关闭_IPV6_通道
- SVD在推荐系统中的应用
- sizeof与strlen的区别与联系