java代码怎么把科学计数法转换为具体数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java代码怎么把科学计数法转换为具体数字相关的知识,希望对你有一定的参考价值。

这是个csv文件 ,用excel打开后 ,默认显示的科学计数法是可以看到有对应的具体数字的,比如这个1.03219E+14是对应的数字是103218689310925 ,请问现在怎么通过java代码实现这个科学计数法转换为具体的数字呢

首先,需要将科学计数法转换成一下:
例如:
BigDecimal bd = new BigDecimal("3.40256010353E11");
然后转换成字符串:
String str = bd.toPlainString();
如果这个数字的长度是在int的范围内的话,是可以转换成int类型:
int a = Integer.parsInt(str);
如果这个数字的长度不是在Int范围内的话,得到的就不是你想要的数字了!
参考技术A 首先,需要将科学计数法转换成一下:
例如:
BigDecimal bd = new BigDecimal("3.40256010353E11");
然后转换成字符串:
String str = bd.toPlainString();
如果这个数字的长度是在int的范围内的话,是可以转换成int类型:
int a = Integer.parsInt(str);
如果这个数字的长度不是在Int范围内的话,得到的就不是你想要的数字了!追问

不对 ,你试试抓换1.03219E+14 ,得出的数字不是我说的真是值

参考技术B  public static void main(String[] args)
    
        BigDecimal bd = new BigDecimal("1.03219E+14");  
        System.out.println(bd.toPlainString());

    
    不过会略去之后的数字

追问

这明显都丢失了精度了,后面全是0了

追答

当然了,你科学技术法中的数字都没有保留这个信息,程序怎么知道你原来的数字是什么呢?
这种转换有位数丢失,中学的时候就学过了。

追问

我是无语了 ,你能不能仔细看我的提问啊 ,不是说了吗,在excel里是可以看到实际的数值的,现在就是要用程序读出这个实际的值

追答

我是无语了,你能不能仔细动下脑子啊,excel的值不只存了你看到的那个。
举个例子吧,你看有些单元格展示的是某个普通的词,但是却是超链接,这说明这个单元格实际上也存了超链接的地址。
言归正传,你要取原来那个值,你就不能简单的取它展示的值,要把它藏起来的那个值也取出来。应该有API的

参考技术C

    凡是科学计数法显示的数据都会带有E,用contains()判断

    判断之后,用bigdecimal.valueof(数据),就会正常显示

参考技术D //把保留小数设大一点
DecimalFormat df=new DecimalFormat("###.#################");
double d = 1.03219E+14;
System.out.println(df.format(d));

js 怎么把小数的科学计数法转换成数字 如:1

参考技术A 科学计数法,就是把一个数表示为“由一位整数和几位小数组成的数并与一个10的几次方相乘的数”。例:125.4,表示为1.254*10^20.0457,表示为4.57*10^(-2)

以上是关于java代码怎么把科学计数法转换为具体数字的主要内容,如果未能解决你的问题,请参考以下文章

js怎么把科学计数法转换成数字

JAVA 关于科学计数法的解决

java字符串转数字如何不显示科学计数法

js 怎么把小数的科学计数法转换成数字 如:1

如何把SQL server 表里插入转换科学计数法的方法。

excel 文本转换数字,数字变成科学计数法了,该怎么解决??