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
我需要双倍,这样所有者的帐户也可以变为负数
# 1 楼答案
-似乎
appartment
是Appartment
类型的数组,其中名为money
的装置对象字段是int
类型-但您正在将其值分配为
double
类型,因此您需要将显式强制转换为从double转换为int例如:
appartment[i].money= (int) Double.parseDouble(word[2]);
# 2 楼答案
在Java中表示货币的最佳实践是使用BigDecimal。有关更多详细信息,请参阅:http://www.javapractices.com/topic/TopicAction.do?Id=13
# 3 楼答案
你们可能在公寓的辩护中说钱是整数,试着把它改成双倍
# 4 楼答案
显然
appartment[i].money= Double.parseDouble(word[2]);
在这里是个问题。如果货币类型为int
,则您应该将word[2]的值强制转换为int
likeappartment[i].money = (int(Double.parseDouble(word[2]));
或者您应该将其解析为一个整数,比如appartment[i].money= Integer.parseInt(word[2]);
# 5 楼答案
用这个,