加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

格式化字符串以删除科学记数法 – Java

发布时间:2020-12-15 00:56:00 所属栏目:Java 来源:网络整理
导读:我有以下代码,它分割一串数字(用空格分隔),然后创建一个浮点数组: //Split the string and then build a float array with the values.String[] tabOfFloatString = value.split(" ");int length = tabOfFloatString.length;System.out.println("Length of
我有以下代码,它分割一串数字(用空格分隔),然后创建一个浮点数组:
//Split the string and then build a float array with the values.
String[] tabOfFloatString = value.split(" ");
int length = tabOfFloatString.length;
System.out.println("Length of float string is" + length);
float[] floatsArray = new float[length];
for (int l=0; l<length; l++) {
float res = Float.parseFloat(tabOfFloatString[l]);
    System.out.println("Float is " + res);
    floatsArray[l]=res;
}

问题是字符串中的某些值是用科学记数法格式化的 – 例如它们读取-3.04567E-8.

我想要做的是最终得到一个不包含E号的浮点数.

我一直在阅读这个线程,这表明我可以使用BigDecimal,但是无法让它工作 – 这是最好的方法还是我应该尝试别的? How to convert a string 3.0103E-7 to 0.00000030103 in Java?

解决方法

以下是您稍微修改过的代码.按照我的说法,这种方法效果很好,实际上并不关心指数的顺序:
public void function() {
    String value = "123456.0023 -3.04567E-8 -3.01967E-20";
    String[] tabOfFloatString = value.split(" ");
    int length = tabOfFloatString.length;
    System.out.println("Length of float string is" + length);
    float[] floatsArray = new float[length];
    for (int l = 0; l < length; l++) {
        String res = new BigDecimal(tabOfFloatString[l]).toPlainString();
        System.out.println("Float is " + res);
        floatsArray[l] = Float.parseFloat(res);
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读