【问题标题】:possible loss of precision required int found double array可能会丢失所需的精度 int 找到双数组
【发布时间】:2016-03-05 22:30:00
【问题描述】:

我已经阅读了一个文件并要求变量是双精度数,因为它们是小数。所以已经这样做了:

String[] data = list.split("\\t");

        homes = Double.parseDouble(data[0]);
        rate = Double.parseDouble(data[1]);

我现在尝试将数据放入数组中,但出现以下错误:

可能损失精度
必需:int
找到:双数组

我需要将变量 home 和 rate 放在一个数组中以便进行计算,并且需要它们翻倍,因为 rate 是十进制的百分比:

private boolean [][] place = new boolean [homes][rate];

如何阻止此错误?

【问题讨论】:

    标签: java arrays int double


    【解决方案1】:

    您收到错误是因为您需要使用 Integer 大小来初始化数组,而不是 doubles。所以你需要将双精度数转换为整数。

    改变

    private boolean [][] place = new boolean [homes][rate];
    

    private boolean [][] place = new boolean [(int)homes][(int)rate];
    

    【讨论】:

    • 您好,谢谢。这会阻止这些值变成小数吗?
    • 是的,这会导致精度损失。但是,如果您仅使用变量来初始化数组,则不需要额外的精度。或者,您可以从一开始就尝试使用Integer.parseInt() 而不是Double.parseDouble()
    • 我明白了,我需要它准确地完成我的任务。有没有办法从文件中读取数据并将它们放入数组中,然后放入“place”数组中?
    • 你需要整数来初始化你的数组。尝试将文件数据存储在其他变量中。
    【解决方案2】:

    数组根据定义使用整数位置进行索引。没有插槽号 9 3/4;只存在于哈利波特中。您实际上必须想到一个看起来像这样的数组:{true, false, true} - "1.75" 的值是多少?!?

    如果您想使用任意值“索引”,您可能正在寻找一个字典,也就是将键(如 9.75)映射到值的 java.collections.Map;或者使用从键到索引的转换表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多