java里,不能直接使用double进行运算

否则如下

0.1+0.2不等于0.3


//'main' method must be in a class 'Rextester'.
//Compiler version 1.8.0_111import java.util.*;
import java.lang.*;
import java.math.*;class Rextester
{  public static void main(String args[]){System.out.println("Hello, World!");double d1 = 0.1, d2 = 0.2;System.out.println(d1 + d2);}
}

所以需要使用BigDecimal转一下。

BigDecimal有下列构造函数

BigDecimal(int var)  //创建一个具有参数所指定整数值的对象。
BigDecimal(double var) //创建一个具有参数所指定双精度值的对象。
BigDecimal(long var)  //创建一个具有参数所指定长整数值的对象。
BigDecimal(String var) //创建一个具有参数所指定以字符串表示的数值的对象。

但是要使用BigDecimal(String var),其它的不管用!!

//'main' method must be in a class 'Rextester'.
//Compiler version 1.8.0_111import java.util.*;
import java.lang.*;
import java.math.*;class Rextester
{  public static void main(String args[]){System.out.println("Hello, World!");double d1 = 0.1, d2 = 0.2;System.out.println(d1 + d2);System.out.println(new BigDecimal(d1).add(new BigDecimal(d2)).doubleValue());System.out.println(BigDecimal.valueOf(d1).add(BigDecimal.valueOf(d2)).doubleValue());System.out.println(new BigDecimal(Double.toString(d1)).add(new BigDecimal(Double.toString(d2))).doubleValue());}
}

另附BigDecimal如何加减乘除

BigDecimal add(BigDecimal augend)  //加法运算
BigDecimal subtract(BigDecimal subtrahend) //减法运算
BigDecimal multiply(BigDecimal multiplicand) //乘法运算
BigDecimal divide(BigDecimal divisor) //除法运算

参考:

https://www.jianshu.com/p/353834bbe7da

https://www.cnblogs.com/linyfeng/p/6915249.html

公众哈:微程序学堂

java double精度丢失 0.1+0.2不等于0.3相关推荐

  1. float与double精度丢失问题

    java中int,float,long,double取值范围 public class TestOutOfBound {public static void main(String[] args) { ...

  2. java long double精度丢失_long long类型转double类型部分精度丢失问题

    我最近做了一道题,一个64位(unsigned __int64)范围内的数输出其除以1000的值,并按四舍五入保留小数点后三位. 我刚开始直接写WA,结果发现当数比较大的时候,结果后几位精度总会丢失, ...

  3. Java 避免精度丢失之BigDecimal 运算

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

  4. java 浮点型 除零_Java-非零整数除以10等于0.0浮点?

    我有一个音量控制滑块来控制Android中音频文件的播放音量.Java-非零整数除以10等于0.0浮点? vSlider=(SeekBar) findViewById(R.id.seekBar2); ...

  5. pgsql中float4导致java程序精度丢失_Java基础系列02

    注释 Java中支持三种注释:1.单行注释以//开始换行结束.2.多行注释以/*开始,以*/结束.3.说明注释以/**开始,以*/结束. 关键字 关键字:是指在程序中,Java已经定义好的单词,具有特 ...

  6. NO.87 提前还款or买火鸡?(捎带举例JAVA Double精度计算问题)

    (如有谬误,敬请指正--) 现在我身上有一笔30万10年基准利率(6.55)的贷款,压力不大(每月等额本息还款3414.08元),于是每月工资留出一部分买了火鸡(货币基金:我买的那个收益年化约4.5, ...

  7. Java float精度丢失问题的解决

    之前在进行蓝桥杯赛题训练的时候,有一题涉及到实数,提交以后有一个案例通过不了,检查一看发现是数据精度丢失了,导致最终的结果出错,现记录如下. 首先,让我们来测试一下 测试代码: import java ...

  8. java double 精度范围_float 和 double 范围和精度

    做java已经有段时间了,可是遇到什么范围啊,精度啊就迷糊,虽然自己经常使用,自己的数据也从未超过int型的范围,但还是多了解下,用着才放心嘛-- 1. 范围 float和double的范围是由指数的 ...

  9. Double计算精度丢失(金融入门知识点)

    Double计算精度丢失(金融入门知识点) 一.double精度丢失 二.为什么double会精度丢失 三.BigDecimal错误的用法 四.BigDecimal正确的用法 Double计算精度丢失 ...

  10. 对不起, 老师 我把知识还给您了 呜呜呜 ......面试杀手-double精度问题深入剖析 进制转换

    面试杀手-double精度问题 & 进制转换 场景模拟 先来看一段VCR (哦走错片场了- 是场景) 面试官: 请你打开IDEA 输出12.56 + 11.25的结果 我: 先愣了一会 啥也没 ...

最新文章

  1. 剑指offer第二版答案详细版(带详细解题思路)
  2. 在持续交付中加入自动化验收测试支持
  3. 编写微指令 计算机组成,计算机组成原理微指令实验报告
  4. php模拟getua_php实现进行远程抓取百度网页内容,并伪装服务器端ip
  5. ASP程序中调用函数Now()显示上午下午的问题
  6. 20万用户同时访问一个热点Key,如何优化缓存架构?
  7. 深度优先搜索(DFS)和广度优先搜索(BFS)探究
  8. 如何将html转为report,如何把Html5 Report Viewer添加到Web项目
  9. PostgreSQL 为什么不要滥用unlogged table hash index
  10. HTTP协议格式、URL格式及URL encode
  11. RBAC权限设计详解
  12. c语言怎么输入若干整数,//从键盘上输入若干整数,并将其存入数组中,并统计输入数据的个...
  13. SAR图像去噪算法汇总
  14. html 库存管理页面,库存管理
  15. 11g中hanganalyze的格式
  16. sql中的类型转换---学习
  17. LeetCode Day01:一年中的第几天
  18. 写给安徽合肥高三的你——少年不惧岁月长,敢挽桑弓射玉衡
  19. SkyEye天目全数字实时仿真软件功能介绍
  20. 二维码制作软件那个好用?

热门文章

  1. ppt讲解中的过渡_PPT「过渡页」怎么设计才好看?
  2. 攻防世界web新手题解题writeup
  3. Crowd 和 JIRA、Confluence、Fisheye and Crucible共享账户集成登入
  4. 以太坊parity安装
  5. UCF,基于用户的协同过滤算法
  6. LINUX gdk/X11正确获取DPI/Resolution的函数
  7. MSP430F149--点亮LED灯程序代码
  8. rac的FAILOVER 和LOAD_BALANCE参数,yes和on是否通用!
  9. MT7620A的DTS
  10. awesome-spider