繁体   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