Java中double类型的变量,计算结果的小数点后为啥会有这么多0?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中double类型的变量,计算结果的小数点后为啥会有这么多0?相关的知识,希望对你有一定的参考价值。
public class TestQuestion
public static void main(String[] args)
double a = 0.2;
int b = 555;
double t = (8654 - 262 - 3500)*a - b;
System.out.println(t);
以上使用notepad++书写,之后调用cmd运行以上程序。为什么输出结果为423.4000000000001,而不是423.4?
这个是 在使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。 特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情。 这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,经常会因为精度丢失而导致程序处理流程出错。
建议你这样试试看:
- public class Poser
public static void main(String[] args)
double a = 0.4;
double b = 0.3;
double t = a - b;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(t));
java中如何将分数转化成小数?
java中如何将分数转化成小数?
先跟你说说吧,假如 a b都是int类型,那么 a/b得到的也是int如果你要变成是double的,就要 a/((double)b) 或者是 ((double)a)/b
这样就能得到小数了 参考技术A 自己做除法运算!公式是:分子除分母。想精确计算就别用double,用java.math.BigDecimal,专门处理计算的。 参考技术B java有分数吗? 1/2是除法 不过因为1 和2 都是整数 所以得到结果也默认是整数 0.5取整就成0了
一般除法需要转型的
比如算1/2 就要 double d=(double)(1/2); 这样得到的d才是0.5.
以上是关于Java中double类型的变量,计算结果的小数点后为啥会有这么多0?的主要内容,如果未能解决你的问题,请参考以下文章
java中double类型数组保留小数点后位数问题!!!!!