[英]Java int multiply by float loss of precision
int totalSum = ids.length() * price;
length is int
price is float
我收到此錯誤:
error: possible loss of precision
如何正確地將int乘以float而不丟失精度?
因為您正在獲取int結果,所以它將忽略小數點后的值
嘗試這個
double totalSum = ids.length() * price;
使用BigDecimal.intvalue
:
int i = new BigDecimal(ids.length).multiply(new BigDecimal(price)).intValue();
...或者您可以將整個操作轉換為int
:
int totalSum = (int)(ids.length() * price);
編輯
正如注釋中所隱含的那樣,我在此明確指出:強制轉換為int
或獲取int
值將導致精度下降。
如果您不確定要選擇哪種類型(並接受他的答案),請使用Deepak的答案。
嘗試這個:
float totalSum = (float) ids.length() * price;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.