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);
}
}