为什么将String转换为double会导致精度降低?

时间:2012-10-08 11:02:02

标签: java string 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 个答案:

答案 0 :(得分:5)

- appartment似乎是Appartment类型的数组,其中名为money的Appartement对象字段为int类型。

- 但是您将它的值设为double类型,因此您需要从double到int 显式强制转换

<强>例如

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

答案 1 :(得分:1)

显然appartment[i].money= Double.parseDouble(word[2]);是个问题。如果货币类型为int,您应该将word [2]的值转换为int appartment[i].money = (int(Double.parseDouble(word[2])); 或者你应该解析为类似的整数  appartment[i].money= Integer.parseInt(word[2]);

答案 2 :(得分:1)

使用此,

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

答案 3 :(得分:0)

你可能在公寓的定义中有钱是int,试着改变它加倍......

答案 4 :(得分:0)

在Java中表示钱的最佳做法是使用BigDecimal。有关详细信息,请参阅:http://www.javapractices.com/topic/TopicAction.do?Id=13

相关问题