Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试创建值数组时发生截断错误_Java - Fatal编程技术网

Java 尝试创建值数组时发生截断错误

Java 尝试创建值数组时发生截断错误,java,Java,我想创建一个间隔为0.2的值数组 我使用了代码: public class TrialCode { public static void main(String[] args) { float a = -1.0f, b = 0.2f; for (int i = 0; i <10; i++) { a = a + b; System.out.println(a); } } } 而我想要的输出是 -0.8, -0.6, -0.

我想创建一个间隔为0.2的值数组 我使用了代码:

public class TrialCode {

public static void main(String[] args) {

    float a = -1.0f, b = 0.2f;

    for (int i = 0; i <10; i++) {
        a = a + b;
        System.out.println(a);

    }

}

}
而我想要的输出是

-0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1.0

我该怎么办?

浮点数只能达到一定的精度。对于
浮点
为6-7位有效数字,对于
双精度
为15-16位有效数字。由于二进制表示,像0.1这样的简单小数不能精确表示

您可以对输出进行四舍五入以获得所需的结果:

System.out.printf("%.1f", a);

你可以用像

new DecimalFormat("#.#").format(0.19999997); //"0.2"

如果不需要浮点运算,那么就不要使用浮点类型
Float
Double
不是Java核心库中唯一的非整数
Number
s。您正在执行的操作调用
BigDecimal

import java.math.BigDecimal;

public class TrialCode {

    public static void main(String[] args) {

        BigDecimal a = new BigDecimal("-1.0");
        BigDecimal b = new BigDecimal("0.2");

        for (int i = 0; i < 10; i++) {
            a = a.add(b);
            System.out.println(a);
        }
    }
}
import java.math.BigDecimal;
公共级三极管{
公共静态void main(字符串[]args){
BigDecimal a=新的BigDecimal(“-1.0”);
BigDecimal b=新的BigDecimal(“0.2”);
对于(int i=0;i<10;i++){
a=a。添加(b);
系统输出打印项次(a);
}
}
}

我正要回答这个问题。java是否有printf或它可能是println?@ItayB yes to@ItayB printf从java 1开始就可用。5@ItayB注:在打印f中,
f
代表“格式”(但不代表文件)
import java.math.BigDecimal;

public class TrialCode {

    public static void main(String[] args) {

        BigDecimal a = new BigDecimal("-1.0");
        BigDecimal b = new BigDecimal("0.2");

        for (int i = 0; i < 10; i++) {
            a = a.add(b);
            System.out.println(a);
        }
    }
}