1,保留两位小数

方法一:{
double c=3.154215;
java.text.DecimalFormat myformat=new java.text.DecimalFormat("0.00");
String str = myformat.format(c);
}

  

方式二:{
java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
df.format(你要格式化的数字);
例:new java.text.DecimalFormat("#.00").format(3.1415926)
#.00 表示两位小数 #.0000四位小数 以此类推...
} 方式三:{
double d = 3.1415926;
String result = String .format("%.2f");
%.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型
}
} 四舍五入 {
double f = 111231.5585;
BigDecimal b = new BigDecimal(f);
//保留2位小数
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}

  

public class PreciseCompute {
//默认除法运算精度
private static final int DEF_DIV_SCALE = 10; /**
* 提供精确的加法运算。
* @param v1 被加数
* @param v2 加数
* @return 两个参数的和
*/ public static double add(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
} /**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/ public static double sub(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
} /**
* 提供精确的乘法运算。
* @param v1 被乘数
* @param v2 乘数
* @return 两个参数的积
*/
public static double mul(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
} /**
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
* 小数点以后10位,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @return 两个参数的商
*/ public static double div(double v1, double v2) {
return div(v1, v2, DEF_DIV_SCALE);
} /**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
* 定精度,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @param scale 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
*/
public static double div(double v1, double v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
} /**
* 提供精确的小数位四舍五入处理。
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/
public static double round(double v, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal ne = new BigDecimal("1");
return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
}

  

private BigDecimal formatComma2BigDecimal(Object obj) {
String val = String.valueOf(obj);
if (val == null)
return new BigDecimal("0.00"); val = val.replaceAll(",", "");
if (!isNumber(val))
return new BigDecimal("0.00"); BigDecimal decimal = new BigDecimal(val);
decimal = decimal.setScale(2, RoundingMode.HALF_UP); return decimal; }
private String formatCommaAnd2Point(Object obj) {
BigDecimal decimal = formatComma2BigDecimal(obj); DecimalFormat df = new DecimalFormat("#,###.00");
String decimalStr = df.format(decimal).equals(".00")?"0.00":df.format(decimal);
if(decimalStr.startsWith(".")){
decimalStr = "0"+decimalStr;
}
return decimalStr;
}
private boolean isDouble(String value) {
try {
Double.parseDouble(value);
if (value.contains("."))
return true;
return false;
} catch (NumberFormatException e) {
return false;
}
}
private boolean isInteger(String value) {
try {
Integer.parseInt(value);
return true;
} catch (NumberFormatException e) {
return false;
}
}
private boolean isNumber(String value) {
return isInteger(value) || isDouble(value);
}

  

最新文章

  1. 编译链接 C++
  2. LVS原理与使用(1)
  3. C#编程总结(三)线程同步
  4. c++ poco库https调用
  5. STM32的I2C通信
  6. hduoj------2594 Simpsons’ Hidden Talents
  7. Flex中NetConnection与NetStream的关系、及浏览器并发连接数测试[转]
  8. 你需要了解的z-index世界
  9. (2015年郑州轻工业学院ACM校赛题)I 旋转图像
  10. Codeforces 450 C. Jzzhu and Chocolate
  11. 团队作业八——第二次团队冲刺(Beta版本)第4天
  12. python导入不同目录下模块的方法
  13. 第十二节: EF的三种模式(二) 之 ModelFirst模式(SQLServer为例)
  14. Vue导出json数据到Excel表格
  15. java.lang.ClassNotFoundException: org.apache.log4j.Logger 异常
  16. http://www.360doc.com/userhome.aspx?userid=5054188&amp;cid=235
  17. Linux C++开发学习(一)
  18. 两个简单的动态规划问题,0-1背包和最大不相邻数累加和,附递归c代码
  19. C#开发Unity游戏教程之Scene视图与脚本的使用
  20. Linux 下 c 语言 聊天软件

热门文章

  1. sublime text3 使用SVN插件
  2. [bigdata] hadoop 参数配置解析
  3. ios开发之Info.plist文件相关配置
  4. Oracle以15分钟为界,统计一天内各时间段的数据笔数
  5. UNIX下的LD_PRELOAD环境变量
  6. wifi万能钥pc版提示手机未连接
  7. 2016百度之星 初赛2B ACEF
  8. 移动前端开发之viewport的深入理解
  9. 【Win10】SplitView控件
  10. 第3月第19天 cxx_destruct dispatch_get_main_queue()死锁