我正在使用MPandroid图表来膨胀饼图,并带有一些String JSON返回值
我尝试使用float.parseFloat(“ 3584907054456.48”)强制转换字符串值
但是当我记录它时它具有指数值,类似于3584907E12
我需要获取浮点值3584907054456.48 有可能吗?
List<String> dataStackedSalesVolume1;
List<String> dataStackedSalesVolume2;
float[] firstDataStacked = new float[counte];
float[] secondDataStacked = new float[counte];
int counte = merchantECommerceDataAll.getData().getMerchantECommerceTipekartuList().getMerchantECommerceTipeKartuData().get(1).getDataSalesVolume().size();
dataStackedSalesVolume1 = merchantECommerceDataAll.getData().getMerchantECommerceTipekartuList().getMerchantECommerceTipeKartuData().get(0).getDataSalesVolume();
dataStackedSalesVolume2 = merchantECommerceDataAll.getData().getMerchantECommerceTipekartuList().getMerchantECommerceTipeKartuData().get(1).getDataSalesVolume();
for (int i=0; i< counte; i++) {
firstDataStacked[i] = Float.parseFloat(dataStackedSalesVolume1.get(i));
secondDataStacked[i] = Float.parseFloat(dataStackedSalesVolume2.get(i));
}
我试图获取字符串并将其放入新列表中,然后解析该列表并将解析后的值放入float []
但是结果是四舍五入的,我需要获取没有四舍五入的完整数据
答案 0 :(得分:1)
编辑-通过使用floatValue()方法可以将BigDecimal值转换为float值。 (示例-float requiredValue = bigDecimalValue.floatValue();
)
但是请注意,这将导致精度下降。
BigDecimal bigDecimalValue = new BigDecimal("3584907054456.48");
System.out.println(bigDecimalValue); //3584907054456.48
float floatValue = bigDecimalValue.floatValue();
System.out.println(floatValue); //3.58490702E12
//Formatted better to show the drop in precision.
System.out.println(String.format("%.2f", floatValue)); //3584907018240.00
请勿使用float
,而应使用BigDecimal
。
请注意,您将无法直接使用+,-,*等运算符。您必须使用提供的方法,请参阅official documentation或类似GeeksForGeeks articles的文章,以帮助您初步了解它。
示例代码-
List<String> dataStackedSalesVolume1;
List<String> dataStackedSalesVolume2;
BigDecimal[] firstDataStacked = new BigDecimal[counte];
BigDecimal[] secondDataStacked = new BigDecimal[counte];
int counte = merchantECommerceDataAll.getData().getMerchantECommerceTipekartuList().getMerchantECommerceTipeKartuData().get(1).getDataSalesVolume().size();
dataStackedSalesVolume1 = merchantECommerceDataAll.getData().getMerchantECommerceTipekartuList().getMerchantECommerceTipeKartuData().get(0).getDataSalesVolume();
dataStackedSalesVolume2 = merchantECommerceDataAll.getData().getMerchantECommerceTipekartuList().getMerchantECommerceTipeKartuData().get(1).getDataSalesVolume();
for (int i=0; i< counte; i++) {
firstDataStacked[i] = new BigDecimal(dataStackedSalesVolume1.get(i));
secondDataStacked[i] = new BigDecimal(dataStackedSalesVolume2.get(i));
}
答案 1 :(得分:0)
您可以使用BigDecimal.valueOf(new Double("3584907054456.48"))
中的java.math
之类的东西
之后,您可以进行划分,比较您的值等等