打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
金融记数法 普通数字 相互转换
import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.text.DecimalFormat;import java.text.NumberFormat;public class OlogyCount {    /**     * 金融记数法转换成普通数字型。     * <br>例如 132,000,123.00 转换后为 132000123.00     * @param data - 要转换的数字字符串     * @return String - 返回转换后的数字字符串     */    public static String finalToNormal(String data) {        if(data.trim()==null||data.trim().equals(""))return "";        //String newData = data.replaceAll(",", ""); //since jdk 1.4        String newData = data;        int index = newData.indexOf(',');        while(index != -1){            newData = newData.substring(0, index) + newData.substring(index+1);            index = newData.indexOf(',');        }        /*        int pos = newData.lastIndexOf('.');        int len = 0; //小数位数        if (pos != -1) {            len = newData.length() - 1 - pos;        }        try {            double d = Double.parseDouble(newData);            NumberFormat form = NumberFormat.getInstance();            String mask = "###0";            if (len > 0) {                mask = "###0.";                for (int i = 0; i < len; i++) {                    mask = mask + "0";                }            }            ((DecimalFormat) form).applyPattern(mask);            newData = form.format(d);        } catch (Exception e) {            e.printStackTrace();        }        */        return newData;    }    /**     * 普通数字型转换成金融记数法。     * <br>例如 132000123.00 转换后为 132,000,123.00     * @param data - 要转换的数字字符串     * @return String - 返回转换后的数字字符串     */    public static String normalToFinal(String data) {        if(data.trim()==null||data.trim().equals(""))return "";        int pos = data.lastIndexOf('.');        int len = 0; //小数位数        if (pos != -1) {            len = data.length() - 1 - pos;        }                try {            double d = Double.parseDouble(data);             NumberFormat form = NumberFormat.getInstance();            String mask = "#,##0";            if (len > 0) {                mask = "#,##0.";                for (int i = 0; i < len; i++) {                    mask = mask + "0";                }            }                                    ((DecimalFormat) form).applyPattern(mask);            return form.format(d);        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    /**     * 普通数字型转换成金融记数法。     * <br>例如 132000123.00 转换后为 132,000,123.00     * <br>小数点保留两位     * @param data - 要转换的数字     * @return String - 返回转换后的数字字符串     */    public static String normalToFinal(double data) {        try {            NumberFormat form = NumberFormat.getInstance();            String mask = "#,##0.00";            ((DecimalFormat) form).applyPattern(mask);            return form.format(data);        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    /**         * Bean 中普通数字型转换成金融记数法。         * <br>小数点保留两位         * @param obj - 要转换的对象         * @param obj - 不要转换的属性集合         * @return String - 返回转换后的数字字符串对象         */    public static Object beanToNoFinal(Object obj,String jH[]) throws Exception{            Class type = obj.getClass();            boolean flag=false;            try{        //*********获得BEAN 的BEAN信息                    BeanInfo info = Introspector.getBeanInfo(type);            //*********通过BEAN的信息获得性质特制集合                PropertyDescriptor[] props = info.getPropertyDescriptors();    //*********循环传递数据                for (int i = 0; i < props.length; i++) {                    flag=false;//*********获得第1个BEAN的每个属性名与GET方法                    String name = props[i].getName();                    Method getMethod = props[i].getReadMethod();//**********如果获得的属性名是jH含有的属性名 把标志设置为真!                                    for(int s=0;s<jH.length;s++){                        if(name.equals(jH[s].toString())||"class".equals(name)                        ||"multipartRequestHandler".equals(name)||"servlet".equals(name)                        ||"servletWrapper".equals(name))flag=true;                    }                    if(!flag){    //*********获得第BEAN的 SET方法                            Method setMethod = props[i].getWriteMethod();                            if(getMethod.invoke(obj,null)==null)setMethod.invoke(obj,new Object[]{"0"});                            setMethod.invoke(obj,new Object[]{OlogyCount.normalToFinal(Double.valueOf(getMethod.invoke(obj,null).toString()).doubleValue())});                        }                }            }catch(Exception e){                throw new Exception("获得对象转换科学计算法出错!");            }            return obj;    }    /**         * 金融记数法换成普通数字型转。         * <br>小数点保留两位         * @param obj - 要转换的对象         * @param obj - 不要转换的属性集合         * @return String - 返回转换后的数字字符串对象         */    public static Object beanGetNoFinal(Object obj,String jH[]) throws Exception{            Class type = obj.getClass();            boolean flag=false;            try{        //*********获得BEAN 的BEAN信息                    BeanInfo info = Introspector.getBeanInfo(type);            //*********通过BEAN的信息获得性质特制集合                PropertyDescriptor[] props = info.getPropertyDescriptors();    //*********循环传递数据                for (int i = 0; i < props.length; i++) {                    flag=false;//*********获得第1个BEAN的每个属性名与GET方法                    String name = props[i].getName();                    Method getMethod = props[i].getReadMethod();//**********如果获得的属性名是jH含有的属性名 把标志设置为真!                                    for(int s=0;s<jH.length;s++){                        if(name.equals(jH[s].toString())||"class".equals(name)                        ||"multipartRequestHandler".equals(name)||"servlet".equals(name)                        ||"servletWrapper".equals(name))flag=true;                    }                    if(!flag){//*********获得第BEAN的 SET方法                            Method setMethod = props[i].getWriteMethod();                            if(getMethod.invoke(obj,null)==null)setMethod.invoke(obj,new Object[]{"0"});                            setMethod.invoke(obj,new Object[]{new String(OlogyCount.finalToNormal(getMethod.invoke(obj,null).toString().trim()))});                        }                }            }catch(Exception e){                throw new Exception("获得对象科学计算法转换数字出错!");            }            return obj;    }    /**         * Bean 中普通数字型转换成金融记数法。         * <br>小数点保留两位         * @param obj - 要转换的对象         * @param obj - 要转换的属性集合         * @return String - 返回转换后的数字字符串对象         */    public static Object beanToFinal(Object obj,String jH[]) throws Exception{            Class type = obj.getClass();            boolean flag=false;            try{        //*********获得BEAN 的BEAN信息                    BeanInfo info = Introspector.getBeanInfo(type);            //*********通过BEAN的信息获得性质特制集合                PropertyDescriptor[] props = info.getPropertyDescriptors();    //*********循环传递数据                for (int i = 0; i < props.length; i++) {                    flag=false;//*********获得第1个BEAN的每个属性名与GET方法                    String name = props[i].getName();                    Method getMethod = props[i].getReadMethod();//**********如果获得的属性名是jH含有的属性名 把标志设置为真!                                    for(int s=0;s<jH.length;s++){                        if(name.equals(jH[s].toString())&&!"class".equals(name)                        &&!"multipartRequestHandler".equals(name)&&!"servlet".equals(name)                        &&!"servletWrapper".equals(name))flag=true;                    }                    //                    if(flag){//*********获得第BEAN的 SET方法                            Method setMethod = props[i].getWriteMethod();                            if(getMethod.invoke(obj,null)==null)setMethod.invoke(obj,new Object[]{"0"});                            setMethod.invoke(obj,new Object[]{OlogyCount.normalToFinal(Double.valueOf(getMethod.invoke(obj,null).toString()).doubleValue())});                            //System.out.println(name+"---"+getMethod.invoke(obj,null).toString());                        }                }            }catch(Exception e){                throw new Exception("获得对象转换科学计算法出错!");            }            return obj;    }    /**         * 金融记数法换成普通数字型转。         * <br>小数点保留两位         * @param obj - 要转换的对象         * @param obj - 要转换的属性集合         * @return String - 返回转换后的数字字符串对象         */    public static Object beanGetFinal(Object obj,String jH[]) throws Exception{            Class type = obj.getClass();            boolean flag=false;            String name="";            Method getMethod=null;            try{        //*********获得BEAN 的BEAN信息                    BeanInfo info = Introspector.getBeanInfo(type);            //*********通过BEAN的信息获得性质特制集合                PropertyDescriptor[] props = info.getPropertyDescriptors();    //*********循环传递数据                for (int i = 0; i < props.length; i++) {                    flag=false;//*********获得第1个BEAN的每个属性名与GET方法                    name = props[i].getName();                    getMethod = props[i].getReadMethod();//**********如果获得的属性名是jH含有的属性名 把标志设置为真!                            System.out.println(name);                            for(int s=0;s<jH.length;s++){                        if(name.equals(jH[s].toString())&&!"class".equals(name)                        &&!"multipartRequestHandler".equals(name)&&!"servlet".equals(name)                        &&!"servletWrapper".equals(name))flag=true;                    }                    if(flag){//*********获得第BEAN的 SET方法                            Method setMethod = props[i].getWriteMethod();                            if(getMethod.invoke(obj,null)==null)setMethod.invoke(obj,new Object[]{"0"});                            if(Double.valueOf(getMethod.invoke(obj,null).toString()).doubleValue()!=new Double("0").doubleValue())                            setMethod.invoke(obj,new Object[]{new String(OlogyCount.finalToNormal(getMethod.invoke(obj,null).toString().trim()))});                        }                                    }            }catch(Exception e){                try {                    System.out.println(e+e.getMessage()+name+getMethod.invoke(obj,null).toString());                } catch (IllegalArgumentException e1) {                    // TODO 自动生成 catch 块                    e1.printStackTrace();                } catch (IllegalAccessException e1) {                    // TODO 自动生成 catch 块                    e1.printStackTrace();                } catch (InvocationTargetException e1) {                    // TODO 自动生成 catch 块                    e1.printStackTrace();                }                throw new Exception("获得对象科学计算法转换数字出错!");            }            return obj;    }}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java 利用反射机制,获取实体所有属性和方法,并对属性赋值
c#
C#反射实例
C# 插件式开发
Hessian解析及应用(整合Spring)
c#实现动态加载Dll
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服