Java int乘以浮点精度损失

时间:2014-04-11 12:26:12

标签: java

int totalSum = ids.length() * price;

length is int
price is float

我收到此错误:

error: possible loss of precision

如何在不丢失精度的情况下正确地乘以浮点数?

3 个答案:

答案 0 :(得分:3)

因为你得到int的结果,这会忽略十进制之后的值

试试这个

double totalSum = ids.length() * price;

答案 1 :(得分:1)

使用BigDecimal.intvalue

int i = new BigDecimal(ids.length).multiply(new BigDecimal(price)).intValue();

...或者您可以将整个操作转换为int

int totalSum = (int)(ids.length() * price);

修改

正如评论中暗示的那样,我明确指出:以int投射或获取int值会导致精确度下降。

如果您不确定选择哪种类型(并接受他的回答),请使用Deepak的答案。

答案 2 :(得分:0)

试试这个:

float totalSum = (float) ids.length() * price;