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

Java 为什么将字符串转换为double可能会丢失精度?,java,string,double,Java,String,Double,我需要双倍,这样所有者帐户也可以变为负数。你可能在公寓的辩护中说钱是整数,试着把它改成双倍…-似乎公寓是一个类型数组公寓,其中,名为money的装置对象字段为int类型 -但您将其值分配为双精度类型,因此需要从双精度到整数的显式转换 例如: appartment[i].money=(int)Double.parseDouble(word[2])在Java中表示货币的最佳实践是使用BigDecimal。有关更多详细信息,请参阅 显然,显然,appartment[i].money=Double.pa

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

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

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

-但您将其值分配为
双精度类型,因此需要从双精度到整数的显式转换

例如:


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

在Java中表示货币的最佳实践是使用BigDecimal。有关更多详细信息,请参阅

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

使用这个

possible loss of precision. 
required: int
found: double

“需要双倍,以便所有者帐户也可以变为负数”一个
int
可以是负数。请注意,货币值通常应表示为int值(单位:美分)也要避免数字的浮点表示。更不用说浮点类型不应用于存储金钱等金融价值……更不用说公寓拼写错误。我还删除了
家庭作业
标记,因为这已被去除。
possible loss of precision. 
required: int
found: double
  appartment[i].money = Integer.parseInt(word[2]);