java double精度丢失 0.1+0.2不等于0.3
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相关推荐
- float与double精度丢失问题
java中int,float,long,double取值范围 public class TestOutOfBound {public static void main(String[] args) { ...
- java long double精度丢失_long long类型转double类型部分精度丢失问题
我最近做了一道题,一个64位(unsigned __int64)范围内的数输出其除以1000的值,并按四舍五入保留小数点后三位. 我刚开始直接写WA,结果发现当数比较大的时候,结果后几位精度总会丢失, ...
- Java 避免精度丢失之BigDecimal 运算
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精确的浮点数运算,包括加减乘除和四舍五入 import java.math.BigDecimal; /** 计算工具类 */ pu ...
- java 浮点型 除零_Java-非零整数除以10等于0.0浮点?
我有一个音量控制滑块来控制Android中音频文件的播放音量.Java-非零整数除以10等于0.0浮点? vSlider=(SeekBar) findViewById(R.id.seekBar2); ...
- pgsql中float4导致java程序精度丢失_Java基础系列02
注释 Java中支持三种注释:1.单行注释以//开始换行结束.2.多行注释以/*开始,以*/结束.3.说明注释以/**开始,以*/结束. 关键字 关键字:是指在程序中,Java已经定义好的单词,具有特 ...
- NO.87 提前还款or买火鸡?(捎带举例JAVA Double精度计算问题)
(如有谬误,敬请指正--) 现在我身上有一笔30万10年基准利率(6.55)的贷款,压力不大(每月等额本息还款3414.08元),于是每月工资留出一部分买了火鸡(货币基金:我买的那个收益年化约4.5, ...
- Java float精度丢失问题的解决
之前在进行蓝桥杯赛题训练的时候,有一题涉及到实数,提交以后有一个案例通过不了,检查一看发现是数据精度丢失了,导致最终的结果出错,现记录如下. 首先,让我们来测试一下 测试代码: import java ...
- java double 精度范围_float 和 double 范围和精度
做java已经有段时间了,可是遇到什么范围啊,精度啊就迷糊,虽然自己经常使用,自己的数据也从未超过int型的范围,但还是多了解下,用着才放心嘛-- 1. 范围 float和double的范围是由指数的 ...
- Double计算精度丢失(金融入门知识点)
Double计算精度丢失(金融入门知识点) 一.double精度丢失 二.为什么double会精度丢失 三.BigDecimal错误的用法 四.BigDecimal正确的用法 Double计算精度丢失 ...
- 对不起, 老师 我把知识还给您了 呜呜呜 ......面试杀手-double精度问题深入剖析 进制转换
面试杀手-double精度问题 & 进制转换 场景模拟 先来看一段VCR (哦走错片场了- 是场景) 面试官: 请你打开IDEA 输出12.56 + 11.25的结果 我: 先愣了一会 啥也没 ...
最新文章
- 剑指offer第二版答案详细版(带详细解题思路)
- 在持续交付中加入自动化验收测试支持
- 编写微指令 计算机组成,计算机组成原理微指令实验报告
- php模拟getua_php实现进行远程抓取百度网页内容,并伪装服务器端ip
- ASP程序中调用函数Now()显示上午下午的问题
- 20万用户同时访问一个热点Key,如何优化缓存架构?
- 深度优先搜索(DFS)和广度优先搜索(BFS)探究
- 如何将html转为report,如何把Html5 Report Viewer添加到Web项目
- PostgreSQL 为什么不要滥用unlogged table hash index
- HTTP协议格式、URL格式及URL encode
- RBAC权限设计详解
- c语言怎么输入若干整数,//从键盘上输入若干整数,并将其存入数组中,并统计输入数据的个...
- SAR图像去噪算法汇总
- html 库存管理页面,库存管理
- 11g中hanganalyze的格式
- sql中的类型转换---学习
- LeetCode Day01:一年中的第几天
- 写给安徽合肥高三的你——少年不惧岁月长,敢挽桑弓射玉衡
- SkyEye天目全数字实时仿真软件功能介绍
- 二维码制作软件那个好用?