int totalSum = ids.length() * price;
length is int
price is float
我收到此错误:
error: possible loss of precision
如何在不丢失精度的情况下正确地乘以浮点数?
答案 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;