import java.math.BigDecimal;

/**

* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 确的浮点数运算,包括加减乘除和四舍五入。

*/

public class DoubleUtils{

private static final int DEF_DIV_SCALE = 2;

/**

* @Description 两个Double数相加

*

* @param d1

* @param d2

* @return Double

*/

public static Double add(Double d1,Double d2){

BigDecimal b1 = new BigDecimal(d1.toString());

BigDecimal b2 = new BigDecimal(d2.toString());

return b1.add(b2).doubleValue();

}

/**

* @Description 两个Double数相减

*

* @param d1

* @param d2

* @return Double

*/

public static Double sub(Double d1,Double d2){

BigDecimal b1 = new BigDecimal(d1.toString());

BigDecimal b2 = new BigDecimal(d2.toString());

return b1.subtract(b2).doubleValue();

}

/**

* @Description 两个Double数相乘

*

* @param d1

* @param d2

* @return Double

*/

public static Double mul(Double d1,Double d2){

BigDecimal b1 = new BigDecimal(d1.toString());

BigDecimal b2 = new BigDecimal(d2.toString());

return b1.multiply(b2).doubleValue();

}

/**

* @Description 两个Double数相除

*

* @param d1

* @param d2

* @return Double

*/

public static Double div(Double d1,Double d2){

BigDecimal b1 = new BigDecimal(d1.toString());

BigDecimal b2 = new BigDecimal(d2.toString());

return b1.divide(b2,DEF_DIV_SCALE,BigDecimal.ROUND_HALF_UP).doubleValue();

}

/**

* @Description 两个Double数相除,并保留scale位小数

*

* @param d1

* @param d2

* @param scale

* @return Double

*/

public static Double div(Double d1,Double d2,int scale){

if(scale<0){

throw new IllegalArgumentException(

"The scale must be a positive integer or zero");

}

BigDecimal b1 = new BigDecimal(d1.toString());

BigDecimal b2 = new BigDecimal(d2.toString());

return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

}

/**

* @Description String类型小数与Double类型的转换

*/

public static void StrToDouble(){

String str="1234.5678";

double num;

DecimalFormat myformat = new DecimalFormat("#0.00");

num = Double.parseDouble(str);//直接转换为double类型

num = Double.parseDouble(myformat.format(num));//保留2为小数

System.out.println(num);

}

}

C语言double数据加减,double类型数据的加减乘除相关推荐

  1. Java中double类型精度丢失的问题_double类型数据加减操作精度丢失解决方法_BigDecimal取整

    BigDecimal在用double做入参的时候,二进制无法精确地表示十进制小数,编译器读到字符串"0.0000002"和"1.0000002"之后,必须把它转 ...

  2. R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载、划分数据、并分别构建线性回归模型和广义线性加性模型GAMs、并比较线性模型和GAMs模型的性能

    R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载.划分数据.并分别构建线性回归模型和广义线性加性模型GAMs.并比较线性模型和GAMs模型的性能 目录

  3. GBase 8a 加载longblob类型数据的方法

    加载longblob类型数据的方法简介 longblob类型数据加载方法分为两种,一种是数据形式的加载,一种是文件形式的加载.加载longblob类型数据时,可以通过加载的table_fields参数 ...

  4. C语言32位系统下基本类型数据所占字节数

    char :1个字节  short int : 2个字节  int: 4个字节  unsigned int : 4个字节  float: 4个字节  double: 8个字节  long: 4个字节  ...

  5. 数据结构(C语言)多项式加减

    这是大二刚开始数据结构的平时作业,上次随便发了,没来得及写标题和内容.题目要求用链表来实现多项式的加减,其实就是设置一个两个指针进行遍历,在代码段里有一些注解,要是有不太清楚的地方可以在下面留言或是私 ...

  6. C语言实现 动态数组 处理任意类型数据

    引言:动态数组在C/C++.Java.Python等语言中应用广泛,高级语言一般通过调用类或接口等可以快捷使用,C语言实现动态数组需要手动构造,以下为实现过程. 1 结构体构造动态数组 typedef ...

  7. c语言实现补码加减,C语言计算器含二进制数加减原反补码(自己的期末作业)

    用C++6.0编写的计算器,内含整数小数加减乘除.二进制数组加减及求原码补码反码! #include #include int main() { void top(); void no1(),no2( ...

  8. c语言字母可以加减吗,C语言算式加减法运算

     /* 通过键盘输入100以内的正整数的加.减法 运算式,请编写一个程序输出运算结果字符串. 输入字符串的格式为:"操作数1 运算符 操作数2" ,"操作数" ...

  9. 表达式求值:从“加减”到“带括号的加减乘除”的实践过程

    本文乃Siliphen原创,转载请注明出处:http://blog.csdn.NET/stevenkylelee ● 为什么想做一个表达式求值的程序 最近有一个需求,策划想设置游戏关卡的某些数值,这个 ...

最新文章

  1. 我看过的SDN方面的好文章
  2. 【android9.0】system/core下的usbhost模块无法输出log到logcat
  3. python socketserver实现服务器端执行命令 上传文件 断点续传
  4. 华中科技大学c语言作业答案,华中科技大学标准C语言程序设计及应用习题答案...
  5. mst算法matlab_基于并查集+Kruskal算法的matlab程序及最小生成树绘图
  6. wxWidgets:C++ 异常
  7. ii 组合总和_40. 组合总和 II – 力扣(LeetCode)
  8. python 一次输入10个数_python 如何一次输入3个整数
  9. 单片机小白学步系列(十) 单片机程序下载相关知识
  10. cacti登录密码忘记解决方法
  11. 中班音乐 机器人教案_【李小娜老师优秀教案分享】中班音乐活动小树叶教案及反思...
  12. html datatype自定义,$.ajax中dataType为html实现地区显示效果
  13. Python抓取打印机硒鼓和组件剩余量的爬虫
  14. ​云原生:重新定义云时代的技术标准 | 凌云时刻
  15. 8.10.3 熊猫分布密度制图
  16. 管理欲望:领导者的自我觉察与突破
  17. Tips--解决Deepin20系统安装完毕无WiFi问题
  18. win10系统如何查询本机的IP地址和外网IP地址
  19. 数据与广告系列三:合约广告与与衍生的第三方广告数据监控
  20. 用Nmap工具查找Downadup/Conficker的蠕虫病毒源

热门文章

  1. 计算机二级c语言程序填空,计算机二级c语言程序填空题.pdf
  2. 根据前序和后序遍历构造二叉树(附前序中序代码)
  3. 【微语】第一周(2020.11.16~11.22)
  4. 23种设计模式-门面模式《爱情公寓大电影》
  5. 使用POI将office(doc/docx/ppt/pptx/xls/xlsx)文件转html格式(附带源码)
  6. SourceMap 与前端异常监控
  7. [时态]八、特殊主系表句型的构成
  8. 【Java】【leetcode第25题】K 个一组翻转链表
  9. 16进制与ASCII互相转换
  10. 两数之和 IV - 输入 BST