将字符串转换为大数字的浮点数

时间:2019-05-21 08:09:57

标签: java android string

我正在使用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 []

但是结果是四舍五入的,我需要获取没有四舍五入的完整数据

2 个答案:

答案 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之类的东西 之后,您可以进行划分,比较您的值等等