簡體   English   中英

Java int乘以浮點精度損失

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM