我有一个这样的数字序列:
1.687155E21
3.981457E19
0.5532155E21
3.018843E21
2.0532155E21
4.5532155E21
3.1637913E19
我的问题是如何将两个以 10^19 结尾的数字转换为与其他数字一样(10^21)。因为在这种统一之后,我需要截断数字以仅打印 3.5 之类的东西。
在 C/C++ 中我知道如何精确地工作,但在 Java 中我不知道。
我有一个这样的数字序列:
1.687155E21
3.981457E19
0.5532155E21
3.018843E21
2.0532155E21
4.5532155E21
3.1637913E19
我的问题是如何将两个以 10^19 结尾的数字转换为与其他数字一样(10^21)。因为在这种统一之后,我需要截断数字以仅打印 3.5 之类的东西。
在 C/C++ 中我知道如何精确地工作,但在 Java 中我不知道。
将所有数字除以/ 1e19
,四舍五入到所需的小数位数:
168.7155
3.981457
55.32155
301.8843
205.32155
455.32155
3.1637913
使用 Formatter 类将它们转换为所需的科学记数法(java.util.Formatter)
我建议使用与 Tomasz Nurkiewicz 类似的方法,但不是除以除以,而是1E19
使用1E21
Formatter 将它们转换为具有所需精度的字符串(参见 count0 的注释),但不是科学格式,而是通用格式。最后只需将 E21 添加到这些字符串中。最后你应该得到(我希望,我的想法是正确的)
1.687155E21
0.03981457E21
0.5532155E21
3.018843E21
2.0532155E21
4.5532155E21
0.031637913E21
你不能把E19
数字乘以10 ^ 2 = 100
吗?
将它们归一化后E21
,您应该能够将它们全部除以10^21
(如果它们是浮点数),它们都将在 0-9.999 的范围内...