Java 计算时1和1.0为什么结果不一样?

package number;
public class First {
public static void main(String args[])
{
double sum = 0,a = 1;
int i = 1;
while(i <= 20)
{
sum = sum+a;
i = i+1;
a = a*(1.0/i);
}
System.out.println(sum);
}
}
代码如上,倒数第5行中,1.0可以得出正确结果1.7182818284590455,用1代替得出结果却 是1.

因为1.0是double类型,而1是int类型,当算的时候,比如1/10,难道能得到0.1?这就是问题所在了,java中这种整数运算得到的也是整数。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-09-08
1.0 java 默认为 double 类型

Java 计算时1和1.0为什么结果不一样?
因为1.0是double类型,而1是int类型,当算的时候,比如1\/10,难道能得到0.1?这就是问题所在了,java中这种整数运算得到的也是整数。

Java以下输出结果为什么不一样?
第一种情况,针对i的每一个数是否为素数,默认值都是ture,然后通过是否除了1和自身,还有其他数可除,再确定为false 第二种情况,一旦有个不是素数,后面全跟着false

java用double和float进行计算有时候精度不准确怎么办
回答:参考下: http:\/\/blog.javaxxz.com\/?p=763

java中运算结果为小数时为什么小数部分为0
原因是 num1和num2都是 整形 ,两个整形的数 运算完成后 得到的数是 整数(如:1),如果赋值给一个 浮点型 的变量,那么只是在 整数 的后面加上 .0 (如:1.0)

为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?
构造方法的差异导致了精度的不同。使用BigDecimal(long) 或 BigDecimal(int)创建的BigDecimal的精度为0,而使用BigDecimal(double)时,尽管我们期望得到1.0,实际创建的是一个近似值。使用BigDecimal(string)时,创建的BigDecimal的精度会根据字符串中的小数点后位数而定。为了避免在等值比较时出现问题,我们...

java用double和float进行计算有时候精度不准确怎么办
这个问题我知道!Java进行数学计算时有一个原则,就是double和float用来做科学计算,商业计算中最好使用java.math.BigDecimal,例如——doubleresult;doubled1=1.0;doubled2=1.0;BigDecimalbd1=newBigDecimal(Double.toString(d1));BigDecimalbd2=newBigDecimal(Double.toString(d2));result=bd1.add(bd2)...

java中1\/2和1.0\/2可看作多态?
你好!这是java中的数据机制,如果运算涉及两个或多个数据类型,那么将会以最高级的那个数据的数据类型来作为结果的数据类型,而多态指的是类的继承,比如定义哺乳动物类,可以派生出大猩猩、猴子、人,这些继承同一父类,而各有特点的类,表达的就是多态性。如有疑问,请追问。

Java中int与float数相加为什么结果会不对
float是单精度浮点数,他不会保证小数位的准确数,比如1.0有可能打印出来是0.99999之类的,反正不精确,要靠自己。

...b=1.0; int a=1;b-=1.5*3+a++; 的结果为什么是负的?
b-=1.5*3+a++相当于b=b-(1.5*3+a++)肯定是负的了

java中,要求一个数的多次平方怎么写?
如果第二个参数是 1.0,那么结果与第一个参数相同。如果第二个参数是 NaN,那么结果是 NaN。如果第一个参数是 NaN,第二个参数是非零,那么结果是 NaN。如果 第一个参数的绝对值大于 1,并且第二个参数是正无穷大,或者 第一个参数的绝对值小于 1,并且第二个参数是负无穷大,那么结果是正无穷...

相似回答