Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按数字顺序统一10^x的幂_Java_Scientific Notation - Fatal编程技术网

Java 按数字顺序统一10^x的幂

Java 按数字顺序统一10^x的幂,java,scientific-notation,Java,Scientific Notation,我有一系列这样的数字: 1.687155E21 3.981457E19 0.5532155E21 3.018843E21 2.0532155E21 4.5532155E21 3.1637913E19 我的问题是如何将以10^19结尾的两个数字转换为其他数字(10^21)。因为在这个统一之后,我需要trunc数字来打印3.5之类的东西 在C/C++中,我知道如何精确地工作,但在Java中我没有任何想法。将所有数字除以/1e19,四舍五入到所需的小数位数: 168.7155 3.981457

我有一系列这样的数字:

1.687155E21
3.981457E19
0.5532155E21 
3.018843E21
2.0532155E21 
4.5532155E21
3.1637913E19
我的问题是如何将以10^19结尾的两个数字转换为其他数字(10^21)。因为在这个统一之后,我需要trunc数字来打印3.5之类的东西


在C/C++中,我知道如何精确地工作,但在Java中我没有任何想法。

将所有数字除以
/1e19
,四舍五入到所需的小数位数:

168.7155
3.981457
55.32155
301.8843
205.32155
455.32155
3.1637913

你能不能把
E19
数字乘以
10^2=100


在它们被标准化为
E21
之后,您应该能够将它们除以
10^21
(如果它们是浮动的),它们都将在0-9.999的范围内……

使用Formatter类将它们转换为所需的科学符号()

我建议使用类似于Tomasz Nurkiewicz的方法,但是,不要除以
1E19
除以
1E21
,而是使用Formatter(参见count0的注释)将它们转换为具有所需精度的字符串,而不是作为科学格式,而是作为通用格式。最后,只需将E21添加到这些字符串中。最后你应该得到(我希望,我的想法是正确的)


是否要将一组
double
s转换为字符串,使它们都具有
.E
的形式,其中指数是所有非零值的一位整数指数的最小值?否。是,最后,我需要转换为字符串,但只能转换为一个小数。C/C++中可用的大多数相同函数在Java中可用,尽管名称可能已更改。如何使用我想要的小数位数进行舍入???我想我需要划分为/1e21,因为e19的数字必须是0或0.xYeah,但问题是要检测数字是否是e19 o E21,我不知道怎么做。这是一个简单的解决方案。谢谢这在这种情况下很好用。但我想知道如何知道一个数字的Exx,以知道在未来任何情况下都要遵循的策略。答案很简单,而且有点数学化。只需计算十进制对数(
Math.log10()
)并取其整数部分。您将获得震级
Exx
。谢谢Vic,下次的回答很好。
1.687155E21
0.03981457E21
0.5532155E21 
3.018843E21
2.0532155E21 
4.5532155E21
0.031637913E21