您的位置:首页 > 编程语言 > Java开发

java精度计算代码,指定精确小数位

2017-02-06 11:43 387 查看

  本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处。

  http://www.cnblogs.com/king-xg/p/6369740.html

  如果觉得对您有帮助,请点击推荐或收藏本博客,谢谢。
  

java代码:

public class App2 {

public static void main(String[] args) {
String val = checkNumber("10.1234155", 2, 6).toString();
System.out.println(val);
}

public static BigDecimal checkNumber(String number, int min, int max) {
// 初始化为max位小数
DecimalFormat df = new DecimalFormat(getMaxStr(max));
String num = df.format(Double.parseDouble(number));
BigDecimal bd = new BigDecimal(num);
String val = bd.toString();
val = val.replaceAll("^(0+)", "");
val = val.replaceAll("(0+)$", "");
int idx = val.indexOf(".");
int len = val.substring(idx + 1).length();
if (len < min) {
if (len == 0 && idx == 0) {
bd = new BigDecimal("0.00");
} else {
bd = new BigDecimal(val).setScale(2);
}
} else {
bd = new BigDecimal(val).setScale(len);
}
return bd;
}

public static String getMaxStr(int max) {
String val = "0.";
for (int i = 0; i < max; i++) {
val += "0";
}
return val;
}
}

控制台:

原理:通过utf-8的字节长度判断是中文还是英文,说明: utf-8解析的字符如果是中文(包括中文符号)均会解析成3个字节,英文则解析成2个。

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: