import java.math.BigDecimal; import java.text.DecimalFormat; /** * @Title: ChangeMoneyUtil.java * @Package: * @Description: TODO * @author: * @date: 2017年5月24日 下午2:44:14 * @version: V1.0 */ public class ChangeMoneyUtil { /** * 分转元 * * @param fen * @return * @author * @date 2017年5月24日 */ public static String changeFenToYuan(int fen) { DecimalFormat def = new DecimalFormat("0.00");// 格式化小数 String s = def.format((float) fen / 100); return s; } /** * 分转元 * * @param fen * @return * @author * @date 2017年7月3日 */ public static String changeFenToYuan(String fen) { DecimalFormat def = new DecimalFormat("0.00");// 格式化小数 if (!StringUtil.hasText(fen)) { return def.format(Float.valueOf("0")); } String s = def.format(Float.valueOf(fen) / 100); return s; } /** * 元转分 * * @param fen * @return * @author * @date 2017年5月24日 */ public static int changeYuanToFen(double yuan) { return Integer.valueOf((int) (yuan * 100)); } /** * 元转分 * * @param fen * @return * @author * @date 2017年7月3日 */ public static int changeYuanToFen(String yuan) { if (!StringUtil.hasText(yuan)) { return 0; } if (yuan.indexOf(".") != -1) { double num = Double.valueOf(yuan) * 100; // 使用round方法:解决Double精度问题 if (round(num % 1.0,2,BigDecimal.ROUND_HALF_UP) == 0) { return Integer.valueOf(String.valueOf((long) num)); } return Integer.valueOf(String.valueOf(num)); } return Integer.valueOf(yuan) * 100; } /** * 对double数据进行取精度. * @param value double数据. * @param scale 精度位数(保留的小数位数). * @param roundingMode 精度取值方式. * @return 精度计算后的数据. */ public static double round(double value, int scale, int roundingMode) { BigDecimal bd = new BigDecimal(value); bd = bd.setScale(scale, roundingMode); double d = bd.doubleValue(); bd = null; return d; } /** * double转int * @param price * @return * @author * @date 2017年7月12日 */ public static int doubleFormatToInt(Double price){ if(null == price){ return 0; } return Integer.valueOf(new DecimalFormat("#").format(price)); } public static void main(String[] args) { /*System.out.println(changeFenToYuan(1002)); System.out.println(changeFenToYuan(1)); System.out.println(changeFenToYuan(0)); System.out.println(changeFenToYuan("1002")); System.out.println(changeFenToYuan("1")); System.out.println(changeFenToYuan("0")); System.out.println(changeFenToYuan(null)); System.out.println(changeYuanToFen(0)); System.out.println(changeYuanToFen(10.02)); System.out.println(changeYuanToFen(0.00)); System.out.println(changeYuanToFen(null)); System.out.println(changeYuanToFen("10.02")); System.out.println(changeYuanToFen("0.00")); //System.out.println(Integer.valueOf("1.01")); System.out.println(doubleFormatToInt(-100.1));*/ System.out.println(changeYuanToFen("1.1")); System.out.println(110%1.0); } }