浮点值增加2[ANDROID]

浮点值增加2[ANDROID],android,type-conversion,Android,Type Conversion,在我的应用程序中,我从网络上获得的一些商品价格是双倍的,然后我必须将其与商品数量相乘,并显示在文本视图上。 双精度原值为0.65340002596378299 因为我希望它为0.65,所以我仅使用此语句 float itemprice = Float.valueOf(String.format("%.2f", price)); 接下来,当我将它乘以6(物品数量)时,我得到了这个结果3.8999999 因此,我使用Math.round函数来获得所需的结果,即0.65*6=3.90 float t

在我的应用程序中,我从网络上获得的一些商品价格是双倍的,然后我必须将其与商品数量相乘,并显示在文本视图上。 双精度原值为0.65340002596378299 因为我希望它为0.65,所以我仅使用此语句

float itemprice = Float.valueOf(String.format("%.2f", price));
接下来,当我将它乘以6(物品数量)时,我得到了这个结果3.8999999

因此,我使用Math.round函数来获得所需的结果,即0.65*6=3.90

float total=Math.round(((no_of_items * itemprice) * 100.0) / 100.0);
最终结果是4.0,但我想要精确的3.90 如何做到这一点?
任何帮助都将不胜感激。

试试这个,结果是3.9:

 double price = 0.65340002596378299;
 float itemprice = Float.valueOf(String.format("%.2f", price));
 float no_of_items = 6;
 float total=(no_of_items * itemprice);
 float itemp = Float.valueOf(String.format("%.2f", total));

结果是3.9,应该是3。90@User我已经编辑了我的答案,给你3.9分want@User要将数字保持在两个小数点,您可以使用此
新的十进制格式(“0.00”).format(doubleValue)
Float.valueOf(String.format(..)
使用字符串,然后将其解析回来是一个糟糕的主意。。。这就是糟糕的应用程序的疯狂程度。你应该学习一些基础知识。。。显然,你可以使用Math.round,将它乘以N,然后除以N,其中N是10^k,以获得小数点后k位的精度
double N=10^k;双舍入=数学舍入(价格*N)/N。。。double也可以是3.9,但您可以使用正确的格式将其显示为3.90
 double price = 0.65340002596378299;
 float itemprice = Float.valueOf(String.format("%.2f", price));
 float no_of_items = 6;
 float total=(no_of_items * itemprice);
 float itemp = Float.valueOf(String.format("%.2f", total));