[英]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]的值,以int
像appartment[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.