各位大侠,我的程序是这样的:
class IntDoubleTest
{
public static void main(String[] args)
{
double d = 123.67;
int i0 = 1;
System.out.println(i + " + " + d + " = " + (i + d));
}
}
但是为什么结果是:10 + 123.67 = 133.67000000000002
这么后面多出了这么多位?我想应该就是133.67啊,但是我把i修改成1后,结果却是:1 + 123.67 = 124.67,这是怎么回事啊?
class IntDoubleTest
{
public static void main(String[] args)
{
double d = 123.67;
int i0 = 1;
System.out.println(i + " + " + d + " = " + (i + d));
}
}
但是为什么结果是:10 + 123.67 = 133.67000000000002
这么后面多出了这么多位?我想应该就是133.67啊,但是我把i修改成1后,结果却是:1 + 123.67 = 124.67,这是怎么回事啊?
里面的i好像没有定义,是不是应该是i0?
首先说明一点JAVA的数据类型是与计算机无关的 double不是一个精确值,它只保证在精度范围内是准确的,double的有效数字为15位,
所以出现133.67000000000002是完全正常的,至于加1后是124.67估计结果为:124.67000000000000,0被省掉了