加.0和不加.0的区别

img

img


a = a * (1.0 / i); a = a * (1 / i);
加.0和不加.0的数值不一样,具体是什么原因呢?

那你首先要理解java中的整数除法运算是怎么回事,/这个是表示整除运算,比如两个int类型的数3和2,3/2的结果是1而不是1.5 ,那要怎么才能得到1.5呢,那就可以把其中一个或多个用小数表示,则/整除运算就会变成常规的除法运算。望采纳!!!

如果没有加.0,那么1/i将会被认为是整数除法,结果将是整数。而加了.0之后,1.0/i将会被认为是浮点数除法,结果将是浮点数。

加.0,那么(1.0/i); 它返回的是浮点型数据。

不加.0,那么 (1/i);它返回的是整型数据。

原因:由于我们输入的十进制的 double 类型的数据在进行计算的时候,计算机会先将其转换为二进制数据,然后再进行相关的运算。但是在十进制转二进制的过程中,有些十进制数是无法使用一个有限的二进制数来表达的,换言之就是转换的时候出现了精度的丢失问题,所以导致最后在运算的过程中,自然就出现了我们看到的一幕。
浮点数由两部分组成:指数和尾数。如果在这个转换过程中,浮点数参与了计算,那么在转换的过程中就会变得不可预知,并且变得不可逆。
也就是在这个过程中,发生了精度的丢失。至于为什么有些浮点计算会得到准确的结果,这是碰巧那个计算二进制和十进制之间能够准确转换。