标签:10 java 结果 double System 0.8 println 除法 out
java程序中经常会遇到使用double类型来进行运算,今天遇一个非常简单地计算,计算结果居然是不对0,查了一些前辈们的资料动手实验了一下,实验结果和代码分享给大家。需要计算的公式:(7/10)*0.8 结果居然不是0.56 而是 0
最后找到原因(7/10)*0.8 这个公式中 问题出在7/10 两个整数相除,结果只取整数部分所以 7.10的结果是0 所以导致整个计算结果不对。实验结果中还可以看到double类型的精度丢失问题,这个不在这里讨论,百度一下就知道原因了。
代码如下:
public static void main(String[] args) { System.out.println("问题:"+(7/10)*0.8); double money = (7/10)*0.8; System.out.println("精度缺失1:"+money); double money1 = 0.7*0.8; System.out.println("精度缺失2:"+money1); double temp = 7; double money2 = (temp/10)*0.8; System.out.println("精度缺失3:"+money2); double temp1 = 10; double money3 = (7/temp1)*0.8; System.out.println("精度缺失3:"+money3); //两个整数相除 System.out.println("关键的问题1:"+7/10); //两个整数相除 System.out.println("关键的问题2:"+19/10); //两个整数相除 System.out.println("关键的问题3:"+12/10); }
输出的结果如下:
问题:0.0
精度缺失1:0.0
精度缺失2:0.5599999999999999
精度缺失3:0.5599999999999999
精度缺失3:0.5599999999999999
关键的问题1:0
关键的问题2:1
关键的问题3:1
标签:10,java,结果,double,System,0.8,println,除法,out 来源: https://www.cnblogs.com/yclh/p/16576996.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。