Java 缩短超大数字的可能方法?

Java 缩短超大数字的可能方法?,java,math,decimal,rounding,Java,Math,Decimal,Rounding,这是我程序中双“m”的值(经过计算后的行星质量,该值专门针对地球质量) 5.9734054370474745E24 使用System.out.println(m)打印时; 输出是 5.9734054370474745E24(正确输出) 使用System.out.println(数学舍入(m))打印时; 输出是 9223372036854775807(输出不正确) 我如何缩短m的值,使其适合%6s? 比如像这样 5.97E24 下面是我的代码。赋值要求我们在格式化的图表中输出最

这是我程序中双“m”的值(经过计算后的行星质量,该值专门针对地球质量)

  • 5.9734054370474745E24
使用System.out.println(m)打印时; 输出是

  • 5.9734054370474745E24(正确输出)
使用System.out.println(数学舍入(m))打印时; 输出是

  • 9223372036854775807(输出不正确)
我如何缩短m的值,使其适合%6s? 比如像这样

  • 5.97E24

下面是我的代码。赋值要求我们在格式化的图表中输出最终值(正如我在下面尝试的那样)


这就是输出的样子。由于m的长值,第二条直线的中心偏移

The radius is: 6378 kilometers.
The mass is: 5.973405437304745E24 kg.
The escape velocity is: 11181 m/s.

         Radius:   6378        km.
           Mass: 9223372036854775807        kg.
Escape Velocity:  11181       m/s.

您可以使用以下代码:

double x=5.9734054337304745e24;
系统输出打印F(“质量:%.2e kg.%n”,x);
输出质量:5.97e+24 kg。

%.2e
格式化数字,
%n
只添加一个换行符。
.2
指定点后需要两位小数。
e
向格式化程序请求科学符号


Math.round()
的问题是,结果存储在一个
long
中,它不能代表这么大的数字。

啊,我明白了,谢谢你的反馈。使用您的代码,输出要短得多,但语句的下一部分似乎打印在新行上。有没有办法解决这个问题?System.out.format(“\n%20s%.2e%n%20s”,“Mass:”,m,“kg”);这就是我正在使用的那一行,“kg”不知何故被打印在一个新的行上。去掉
%n
,这是一个新的行。或者,可能是你的控制台不够宽:oThanks boss!工作得很好。
The radius is: 6378 kilometers.
The mass is: 5.973405437304745E24 kg.
The escape velocity is: 11181 m/s.

         Radius:   6378        km.
           Mass: 9223372036854775807        kg.
Escape Velocity:  11181       m/s.