金钱转换类

public class MoneyFormatUtil {  //分转换成元    public static String format_fen_as_yuan(int money_fen) {        float money_yuan = new BigDecimal(money_fen / 100f).setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();        return format(money_yuan);    }

    /**     * @param @param  money     * @param @return     * @return String     * @throws     * @Description: 格式化,保留小数点后两位     */    public static String format(float money_yuan) {        String str = money_yuan + "";        int pos = str.indexOf(".");        if (pos < 0)            return str;        else {            String pre = str.substring(0, pos);            String last = str.substring(pos + 1);            try {                int xiaoshu = Integer.parseInt(last);                if (xiaoshu == 0) {                    return pre;                }            } catch (NumberFormatException ex) {                ex.printStackTrace();            }        }        DecimalFormat df = new DecimalFormat("##0.00");        return df.format(money_yuan);    }}
//元转换为分 用法Money.fromYuan(yuan).fen();
public class Money implements Serializable, Parcelable {    BigDecimal value_bigDecimal;    int value_fen;    float value_yuan;

    public Money(int value_fen) {        this.value_fen = value_fen;        value_bigDecimal = new BigDecimal(value_fen);        this.value_yuan = value_bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();    }

    public Money(Parcel in) {        this(in.readInt());    }

    public static Money fromFen(String fen) {        return new Money(Integer.parseInt(fen));    }

    public static Money fromFen(int fen) {        return new Money(fen);    }

    public static Money fromYuan(String yuan_money_str) {        float money_shishou_yuan = Float.parseFloat(yuan_money_str);        return fromYuan(money_shishou_yuan);    }     public static Money fromYuan(float money_shishou_yuan) {        int fen = new BigDecimal(money_shishou_yuan).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).intValue();        Money money = new Money(fen);        return money;    }

    public int fen() {        return value_fen;    }

    public float yuan() {        return value_yuan;    }

    public BigDecimal toBigDecimalValue() {        return value_bigDecimal;    }

    /**     * 显示金额,比如: 3.1 (元,不包含单位)     *     * @return     */    public String toStringAsYuan() {        return MoneyFormatUtil.format_fen_as_yuan(value_fen);    }

    public Money multiply(BigDecimal num) {        return new Money(new BigDecimal(value_fen).multiply(num).intValue());    }

    public Money divide(BigDecimal num) {        return new Money(new BigDecimal(value_fen).divide(num).intValue());    }

    public Money add(BigDecimal num) {        return new Money(new BigDecimal(value_fen).add(num).intValue());    }

    public Money subtract(BigDecimal num) {        return new Money(new BigDecimal(value_fen).subtract(num).intValue());    }

    @Override    public String toString() {        return toStringAsYuan();    }

    @Override    public int describeContents() {        return 0;    }

    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeInt(value_fen);    }

    public static final Parcelable.Creator<Money> CREATOR = new Parcelable.Creator<Money>() {        public Money createFromParcel(Parcel in) {            return new Money(in);        }

        public Money[] newArray(int size) {            return new Money[size];        }    };

}
时间: 2024-10-03 22:52:24

金钱转换类的相关文章

mybatis自定义枚举转换类

mybatis提供了 EnumTypeHandler和EnumOrdinalTypeHandler完成枚举类型的转换,两者的功能已经基本满足了日常的使用.但是可能有这 样的需求:由于某种原因,我们不想使用枚举的name和ordinal作为数据存储字段.mybatis的自定义转换类出现了. 示例 使用一段代码,将枚举类EnumStatus中的code属性存储到数据库对应字段statusCustom. 自定义转换类 package com.sg.util.typehandler; import ja

java 字节流和字符流转换类InputStreamReader,OutPutStreamReader

import java.io.*; public class BufferDemo { public static void main(String[] args) throws IOException { BufferedReader buf=null; buf=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Please enter a number:"); String str=buf

谈ATL(一)--说说ATL字符串转换类

大家在使用ATL技术做项目时,一定发现了非常麻烦的字符串字符集问题,下面把常用点和重点记录罗列一下,以备查. ATL提供了许多字符串转换函数,如果编译选项使得源和目的的字符类型相同,那么这些类不执行任何转换,关于设置系统编译项的问题前面windows编程的文章中已经介绍过.如果要使用ATL的字符转换类,那么必须要包含<atlconv.h>文件,转换的具体方式均是通过宏定义(宏函数)来完成,为了更好的列出这些宏函数及明确其功能,需要先说明一下都有哪些字符串类型以及他们的缩写形式: T表示一个指向

时间格式转换类

 时间格式转换类 时间的字符串形式与毫秒形式相互转换的类. using System; namespace myspace { /// <summary> /// 指定若干常数,表示计时格式. /// </summary> public enum TimingFormat : byte { /// <summary> /// 毫秒. /// </summary> Ms, /// <summary> /// 秒 /// </summary

Java字节转换类实现

Java的类库支持完全不如C#,比如时间类,比如数据类型转换类等等,难道是我自己没找到吗? 下面是字节转换类,byte[]与short, int, long, float, double, String相互转换:网络字节序htons, htonl等实现:byte[]转十六进制字符串.二进制字符串实现. 希望对朋友有用,如果有更好的方法,请提醒我. public class ByteUtil { /** * 转换short为byte * * @param b * @param s * 需要转换的s

日期转换类

1:   2: // 创建日期: 2008-04-23 3: // 说 明: 日期,时间处理相关的类,大多转换为字符串. 4: using System; 5: using System.Collections.Generic; 6: using System.Text; 7:   8: namespace AnkeEdu.Tools 9: { 10: /// <summary> 11: /// 日期,时间处理 12: /// </summary> 13: public stati

日期转换类 DateConverter.java

package com.util; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; /** * 日期转换类 * */ public class DateConverter extends De

DataTable与DTO对象的简易转换类

在web开发过程中,有时候为了数据传输的方便,比如:后台需要更新前端的ViewModel,此时我们定义一个与前端ViewModel结构一样的DTO对象,从数据层获取数据后,将数据封装成DTO然后序列化为json传回前端,由于我正在开发的项目中的Model是用DataSet来实现的,不是纯粹的面向对象(如果Model是对象的话可以用AutoMapper来实现转换),所以从数据层获取的都是DataSet或DataTable,这时需要将DataTable转换为DTO对象,DTO对象的属性与DataTa

Scala隐式转换类遇到的问题

今天练习Scala的隐式转换类遇到的一个问题,测试代码如下: object ImplcitTest { def main(args: Array[String]) { import Context._ val person1 = User("zhangsan") println(person1.getStr()) val filePath = Thread.currentThread.getContextClassLoader.getResource("test.txt&qu