问题描述
在SO上有一个类似的问题,建议使用我已经完成的NumberFormat。
There is a similar question on SO which suggests using NumberFormat which is what I have done.
我正在使用NumberFormat的parse()方法。
I am using the parse() method of NumberFormat.
public static void main(String[] args) throws ParseException{
DecToTime dtt = new DecToTime();
dtt.decToTime("1.930000000000E+02");
}
public void decToTime(String angle) throws ParseException{
DecimalFormat dform = new DecimalFormat();
//ParsePosition pp = new ParsePosition(13);
Number angleAsNumber = dform.parse(angle);
System.out.println(angleAsNumber);
}
我得到的结果是
我真的没想到这会起作用,因为1.930000000000E + 02是一个非常不寻常的数字,我是否必须首先进行一些字符串解析才能删除零?或者有一种快速而优雅的方式吗?
I didn't really expect this to work because 1.930000000000E+02 is a pretty unusual looking number, do I have to do some string parsing first to remove the zeros? Or is there a quick and elegant way?
推荐答案
当您使用带有科学记数法的表达式的DecimalFormat时,您需要指定一个图案。尝试类似
When you use DecimalFormat with an expression in scientific notation, you need to specify a pattern. Try something like
DecimalFormat dform = new DecimalFormat("0.###E0");
参见 - 有一个标记为科学记数法的部分。
See the javadocs for DecimalFormat -- there's a section marked "Scientific Notation".
这篇关于将科学记数法转换为十进制记数法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!