java中数据转换问题,1.2+1+1.2=3.4000000000000004??

来源:百度知道 编辑:UC知道 时间:2024/05/29 20:55:19
我用JAVA写了一个小程序,但是中间的数据类型转换好像有问题,但是我又找不到,哪位高手可以帮帮小弟?我的问题是:当我输入1.2+1+1.2时,答案是3.4000000000000004,而其它的数据的运算大部分时间是对的,偶尔才会出现类似的错误。。我写的是一个计算器的GUI,中间用到了数据类型的转换:如 public void actionPerformed(ActionEvent e){
for(int i=0;i<s.length();i++){
double s2=Math.pow(10, s.length()-1-i);
double s3=(double)Integer.parseInt(String.valueOf(s.charAt(i)));
result+=(double)s2*s3;
x=result;
}

还有: for(int i=0;i<s.length();i++){
double s2=(double)Math.pow(10, -i-1);

double s3=(double)Integer.parseInt(String.valueOf(s.charAt(i)));

result+=s2*s3;
}

不建议用double用float,推荐BigDecimal

double s3=(double)Integer.parseInt(String.valueOf(s.charAt(i)));
为什么不直接用
double s3=Double.parseDouble(String.valueOf(s.charAt(i)));

不要用double用float。这是cpu内部引起的误差吧。

11111111111111111111111111111111111