Java for循环中从负到正的双倍增量

Java for循环中从负到正的双倍增量,java,Java,我执行了下面的for循环 for(double i = -1.0;i <=1.0;i=i+0.1) System.out.println(i); 在0.0之前的中间得到一个奇怪的-1.387777807814457E-16 小数点在二进制中并没有精确的表示,但应该有相关性。该-1.3877778070814457E-16与-0.1至0.0之间的任何值无关 为什么要计算这个值?你从来没有在循环中使用过double。但为什么要选择这个中间值呢?只是出于好奇。它是E符号-基本上它的

我执行了下面的for循环

for(double i = -1.0;i <=1.0;i=i+0.1)
      System.out.println(i);
在0.0之前的中间得到一个奇怪的-1.387777807814457E-16

小数点在二进制中并没有精确的表示,但应该有相关性。该-1.3877778070814457E-16与-0.1至0.0之间的任何值无关


为什么要计算这个值?

你从来没有在循环中使用过
double
。但为什么要选择这个中间值呢?只是出于好奇。它是E符号-基本上它的意思是-1.387777807814457x10^(-16)。基本上是一个很小的数字。谢谢你的回答埃文。
-1.0
-0.9
-0.8
-0.7000000000000001
-0.6000000000000001
-0.5000000000000001
-0.40000000000000013
-0.30000000000000016
-0.20000000000000015
-0.10000000000000014
-1.3877787807814457E-16
0.09999999999999987
0.19999999999999987
0.2999999999999999
0.3999999999999999
0.4999999999999999
0.5999999999999999
0.6999999999999998
0.7999999999999998
0.8999999999999998
0.9999999999999998