String,double,long之间的转换工具类

来源:互联网 发布:整理数据 编辑:程序博客网 时间:2024/06/05 05:36

 

使用例子

 

/** *  *  */public long getMoney_count_ms(){return this.money_count_ms;}/** *  *  */public void setMoney_count_ms(long money_count_ms){this.money_count_ms = money_count_ms;}public String getMoney_count_ms_str() {return NumberUtil.getLongToDouble(getMoney_count_ms());}public void setMoney_count_ms_str(String money_count_ms_str) {setMoney_count_ms(NumberUtil.setDoubleToLong(money_count_ms_str));}


 

 

String,double,long之间的转换工具类

 

/** * <pre> * String,double,long之间的转换工具类 *  * @comment: * 1,String -->double-->long  * 2,long -->double-->long或double-->String *  *   */public class NumberUtil {public static double _d_10000 = 10000d;public static double _d_100 = 100d;/** * <pre> * String(30.58)转换成double(3058), * 乘以10000(305800) * 再转换成long(305800) * @param _str * @return * </pre> */public static long setDoubleToLong(String _str) {String str=NumberUtil.trim(_str);long _long = 0;if ("".equals(str) || "0".equals(str) || "0.0".equals(str) || "0.00".equals(str)) {_long = 0;} else {double _d = Double.parseDouble(str);_long = (long) BigDecimalUtil.mul(_d, _d_10000);}//System.out.println(_long);return _long;}/** * <pre> * long (305800,30000) 转换double * 除以10000(30.58,3),如果没有小数点,再转换成long * 最后再转换成String *  * @param _long * @return * </pre> */public static String getLongToDouble(long _long) {String _str = "0";if (_long == 0) {_str = "0";} else {double _double = _long;_double = BigDecimalUtil.div(_double, _d_10000);long _long_ = (long) _long;_long_ = _long_ / 100l;_long_ = _long_ / 100l;if (_double == _long_) {_str = String.valueOf(_long_);} else {_str = String.valueOf(_double);}}//System.out.println(_str);return _str;}/** * 测试 * @param args */public static void main(String[] args) {NumberUtil.getLongToDouble(3000800);NumberUtil.setDoubleToLong("300.88");}public static String trim(String str) {return ((str == null) ? "" : str.trim());}}


 

double 类型数据的加减乘除

 

import java.math.BigDecimal;/** * <pre> * 由于Java的简单类型不能够精确的对浮点数进行运算, * 这个工具类提供精 确的浮点数运算, * 包括加减乘除和四舍五入。 *  *  * </pre> */public class BigDecimalUtil {/** 默认除法运算精度*/private static final int DEF_DIV_SCALE = 15;/** 这个类不能实例化*/private BigDecimalUtil() {}/** * 提供精确的加法运算。 *  * @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 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 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();}/** * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后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 两个参数的商 */public static double div(double v1, double v2, int scale) {if (scale < 0) {throw new IllegalArgumentException("The scale must be a positive integer or zero");}BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();}public static void main(String[] args) {double d = BigDecimalUtil.div(3028800, 10000);System.out.println(d);}/** * 提供精确的小数位四舍五入处理。 *  * @param v *            需要四舍五入的数字 * @param scale *            小数点后保留几位 * @return 四舍五入后的结果 */public static double round(double v, int scale) {if (scale < 0) {throw new IllegalArgumentException("The scale must be a positive integer or zero");}BigDecimal b = new BigDecimal(Double.toString(v));BigDecimal one = new BigDecimal("1");return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();}}


 

 

原创粉丝点击