java的BUG吗

[复制链接]
查看11 | 回复4 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
100*1100.11 = 110010.99999999999 ?
好像是java的BUG
怎么解决?

回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
是FLOAT和DOUBLE的区别。
用float的话就对了
100D*1100.11D = 110010.99999999999
100F*1100.11F = 110011.0
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
我建議的方法是使用decimal的class來做相乘的動作,才不會有錯誤!
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
我用BigDecimal实现了。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
import java.sql.*;
import java.lang.*;
import java.math.*;
import java.util.*;
public class Test
{
public Test() {
}
public static void main(String[] args) throws Exception
{
Test test1 = new Test();
System.out.println("0.1+0.2=" + (0.1D+0.2D));
System.out.println("1.01+4.012=" + (1.01D+4.012D));
System.out.println("10-2.22=" + (10D-2.22D + 0.0000005D));
System.out.println("2.22-10=" + (2.22D-10D));
System.out.println("2.22-10-0.0000005=" + (2.22D-10D-0.0000005D));
System.out.println("1100.11*100=" + (1100.11D*100D));
System.out.println("1100.11*10*10=" + (1100.11D*10D*10D));
System.out.println("1000*0.5055=" + (1000D*0.5055D));
Add(0.1, 0.2);
Add(1.01, 4.012);
Sub(10, 2.22);
Sub(2.22,10);
Mutli(100, 1100.11);
Mutli(1000, 0.5055);
}
private static double Sub(double d1, double d2)
{
BigDecimal v11 = new BigDecimal(String.valueOf(d1));
BigDecimal v12 = new BigDecimal(String.valueOf(d2));
BigDecimal v13 = v11.subtract(v12);
System.out.println(v11 + "-" + v12 + "=" +(v13));
return v13.doubleValue();
}
private static double Add(double d1, double d2)
{
BigDecimal v11 = new BigDecimal(String.valueOf(d1));
BigDecimal v12 = new BigDecimal(String.valueOf(d2));
BigDecimal v13 = v12.add(v11);
System.out.println(v11 + "+" + v12 + "=" +(v13));
return v13.doubleValue();
}
private static double Mutli(double d1, double d2)
{
BigDecimal v11 = new BigDecimal(String.valueOf(d1));
BigDecimal v12 = new BigDecimal(String.valueOf(d2));
BigDecimal v13 = v12.multiply(v11);
System.out.println(v11 + "*" + v12 + "=" +(v13));
return v13.doubleValue();
}
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行