java中double类型变量保留小数点后两位的问题

2024-11-23 08:13:04
推荐回答(4个)
回答1:

double 的乘法是: double* int = double * (double)int
0.29*100 = 0.29* (double)100
你可以System.out.println("100="+(double)100);看看输出时多少,你就明白为什么不输出29.0了

回答2:

要计算高精度数据请使用BigDecimal来计算和设置位数

回答3:

import java.text.*;

DecimalFormat df=new DecimalFormat(".##");
double d=1252.2563;
String st=df.format(d);
System.out.println(st);

回答4:

在孙卫琴的《Java面向对象编程》当中的79页讲述了关于float类型的数据在内训当中的存储形式:即采用了二进制科学计数法。有别于十进制科学计数法。而对于float类型来说这种计数法将导致误差,并不是输入什么就直接以二进制存储什么。同样对应的,对于double类型也是才去的额是二进制科学计数法,只是具体存储规则书上没有做介绍,我也没有百度到,但是肯定是可以有误差的。
所以在将100强制转换成double类型后,(我的猜测因为没有找到具体的double类型存储规则)100大概是99.*(接近100)的样子,然后0.29*99.*得到28.*,最后强制转换成int类型,舍掉最后小数位即28。