繁体   English   中英

为什么将String转换为double可能会失去精度?

[英]Why is there a possible loss of precision converting a String to 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

我需要加倍,以便所有者帐户也可以转为负数。

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

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

例如:

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

显然是appartment[i].money= Double.parseDouble(word[2]); 这是一个问题。 如果货币类型是int ,任你应该投字[2]的值,以intappartment[i].money = (int(Double.parseDouble(word[2]));或者,你应该解析成整数类似于appartment[i].money= Integer.parseInt(word[2]);

用这个,

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

您可能在辩解中认为金钱是整数,请尝试将其更改为两倍...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM