有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么将字符串转换为double可能会丢失精度?

for (int i = 0; i < 18; i++) {
  line = file.readLine();
  String[] word = line.split(";");

  appartment[i] = new Appartment();
  appartment[i].floor= Integer.parseInt(word[0]);
  appartment[i].name = word[1];
  appartment[i].money= Double.parseDouble(word[2]);
  appartment[i].owner= word[3];
}

有人能告诉我为什么这不起作用吗?我在读一个文件。我试图把钱从字符串转换成双精度的,但它说

possible loss of precision. 
required: int
found: double

我需要双倍,这样所有者的帐户也可以变为负数


共 (5) 个答案

  1. # 1 楼答案

    -似乎appartmentAppartment类型的数组,其中名为money的装置对象字段是int类型

    -但您正在将其值分配为double类型,因此您需要将显式强制转换为从double转换为int

    例如:

    appartment[i].money= (int) Double.parseDouble(word[2]);

  2. # 3 楼答案

    你们可能在公寓的辩护中说钱是整数,试着把它改成双倍

  3. # 4 楼答案

    显然appartment[i].money= Double.parseDouble(word[2]);在这里是个问题。如果货币类型为int,则您应该将word[2]的值强制转换为intlike appartment[i].money = (int(Double.parseDouble(word[2])); 或者您应该将其解析为一个整数,比如 appartment[i].money= Integer.parseInt(word[2]);

  4. # 5 楼答案

    用这个,

      appartment[i].money = Integer.parseInt(word[2]);