Java中,double类型的两个小数相减,值不正确

问题描述

Java中,double类型的两个小数相减,值不正确

double num1 = 0.03;
double num2 = 0.02;
double num;
num = num1 - num2;
此时得到的num!= 0.01,而是等于0.0099....998;请问这是为什么啊?这是由于double类型的精度造成的嘛?谢谢。

解决方案

浮点数存储肯定有精度误差,特别是小数点后面,可以用BigDecemal这个类做

时间: 2024-05-22 23:14:18

Java中,double类型的两个小数相减,值不正确的相关文章

java中double类型的值如何实现科学计数法

问题描述 java中double类型的值如何实现科学计数法 java中,一个double类型的数值,如何在显示的时候是科学计数法 解决方案 它达到一定的值,就会显示成科学计数格式,当然你可以自己这个格式化方法任意转 解决方案二: 小数位数多了自动科学计数法表示的吧.

java中double类型运算结果异常的解决方法_java

问题: 对两个double类型的值进行运算,有时会出现结果值异常的问题.比如: System.out.println(19.99+20); System.out.println(1.0-0.66); System.out.println(0.033*100); System.out.println(12.3/100); 输出: 39.989999999999995 0.33999999999999997 3.3000000000000003 0.12300000000000001 解决方法: J

java中Double类型的运算精度丢失的问题 (小数点多出99999999999999)

 在使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1. 特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情. 这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,经常会因为精度丢失而导致程序处理流程出错.  首先贴一个使用的代码: /** * 将double类型数据转为字符串(如将18.4转为1840,如果需要1840.0,把int强转去掉即可) * @par

Java的double类型探索.

一.double类型的存储表示 Java的浮点类型表示完全按照IEEE754标准(Standards of IEEE 754 floating point numbers),有兴趣可以上IEEE标准网站(www.ieee.org)查阅.该标准的内容基本上描述了浮点类型的存储格式(Storage Layout),下面我从中总结几段,来概括该标准,详细信息请查阅标准原文. 1.什么是浮点数. 计算机上表达实数有两中方法:定点表示(fixed-point)和浮点表示(floating-point).定

误差-Java的double类型在运算时,结果有的时候不能精确显示。我知道是进制导致的。

问题描述 Java的double类型在运算时,结果有的时候不能精确显示.我知道是进制导致的. 下图讲解,我懂. 但是,在做题的时候............. 才发现,我也只能确定0.1不能被精确显示,具体该如何解这样的题呢? 其实我进一步思考了.我以为就看尾数是不是5.比如0.5.0.05.因为2的-x次方的尾数都是5.是5就能精确显示,不是就不能.但是后来发现.................计算误差"> 说明不能只靠最终结果来判断...............那该怎么判断啊? 问题补充

java中基本类型之间的转换

问题描述 java中基本类型之间的转换,笔试中常见的考题及答案,亲们,有能力的就帮忙解答下呗!(额的基础不好呀!) 解决方案 解决方案二:主要是3种,分别如下: 1.字符串和基础数据类型的互相转换 2.基础数据类型和其相对应的包装类的互相转换 3.字符串和基础数据类型的包装类的互相转换  1. (1)字符串转换成为基础数据类型 String s = "200";  int i = Integer.parseInt("s"); 或者 int si2 = new Int

string-关于java中String类型参数传递的问题,谁能给我讲清楚

问题描述 关于java中String类型参数传递的问题,谁能给我讲清楚 我知道java里面参数传递是值传递,这点不用给我解释了.但是: import java.util.*; public class Test { public static void change(String s){ s="2"; } public static void main(String[] args) throws Exception{ String s="1"; change(s);

Java中String类型能转成int类型吗

问题描述 Java中String类型能转成int类型吗 一个String字符串 能否像 char类型一样 转换成int值 如果可以Java中怎么写 解决方案 看你用什么预言,各种预言都有转换函数,只要符合数值型,就可以正常转换 解决方案二: double?d?=?1.233; String?s1?=?String.valueOf(d); String?s2?=?s1.substring(0,?s1.indexOf("."))?+?s1.substring(s1.indexOf(&quo

java中凡是相同的两个单词(保留关键词除外)以大写开头的就是类,以小写字母开头的就是对象。

问题描述 java中凡是相同的两个单词(保留关键词除外)以大写开头的就是类,以小写字母开头的就是对象. java中凡是相同的两个单词(保留关键词除外)以大写开头的就是类,以小写字母开头的就是对象. 比如 Abc.set( );就是类调用方法set abc.set( );就是对象调用方法set 这种说法对吗 解决方案 类实例一般开头字母会小写,但也没有限制 解决方案二: 没有这个规定,类的命名不分大小写,开头字母大写,只是个好的习惯 解决方案三: 没有你说的这个现象.这个大小写编码规范. 解决方案