当前位置: 首页 > 知识库问答 >
问题:

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

宰父深
2023-03-14

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

  • 5.9734054370474745E24

使用System.out.println(m)打印时;输出为

  • 5.9734054370474745E24(正确输出)

使用系统打印时。出来println(数学圆(m));输出是

  • 9223372036854775807(输出错误)

我怎样才能缩短m的值,使其在%6s之内?比如说

  • 5.97E24

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

//Java imports
import java.util.*;
import java.lang.Math;

//Main class
class Main {
  public static void main(String[] args) {
    //Initializing scanner name userInput
    Scanner userInput = new Scanner (System.in);

    //Greeting statement, prompts user to input the circumference in km
    System.out.println("\nWelcome to the Escape Velocity Application. To begin, please enter the following information below. \nEnter the circumference (km):");

    //Stores circumference in double named "circum" and converts the value to its meter equivalent (unit conversion required)
    double circum = userInput.nextDouble() * Math.pow(10, 3); 

    //Prompts user to input the acceleration in m/s^2
    System.out.println("Enter the acceleration due to gravity (m/s^2):");

    //Stored value in double named "f"
    double f = userInput.nextDouble(); 

    //Gravitational Constant
    double G = 6.67408e-11;

    //1 - Radius calculation using the circumference of a circle formula
    double r = circum/(2*Math.PI);

    //2 - Mass calculation using the gravity formula
    double m = f*Math.pow(r, 2)/G;

    //3 - Calculation escape velocity using the escape velocity formula
    double e = (Math.sqrt((2.0*G*(m))/r));

    //Final output statements
    System.out.println("\nThe radius is: " + Math.round(r * Math.pow(10, -3)) + " kilometers.");
    System.out.println("The mass is: " + m + " kg.");
    System.out.println("The escape velocity is: " + Math.round(e) + " m/s.");

    //Formatted output statements
    System.out.format("\n%20s %6s %10s", "Radius:", Math.round(r * Math.pow(10, -3)), "km.");
    System.out.format("\n%20s %6s %10s", "Mass:", Math.round(m), "kg.");
    System.out.format("\n%20s %6s %10s", "Escape Velocity:", Math.round(e), "m/s.");
  }
}

这就是输出的样子。由于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.

共有1个答案

杨波娃
2023-03-14

您可以使用以下代码:

double x = 5.973405437304745e24;
System.out.printf("Mass: %.2e kg.%n", x);

输出<代码>质量:5.97e 24 kg

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

数学的问题。round()的意思是,结果存储在一个不能代表如此大的数字的long中。

 类似资料:
  • 问题内容: 我正在研究使用一种算法来缩短/加密URL的可能性,该URL的长度从150到250个字符到最大12个字符。最初,我怀疑是否有可能,但我想利用StackOverflow的出色思想:) 该算法应该是可以用经典的asp,sql,c#,vb或foxpro或其他语言编写的算法。 如果没有以数据库为中心的方法,那是否有可能? 我在这里阅读的内容是,CFB模式下的AES将执行流密码,并且输出长度将与输

  • 我有以下代码开始扫描BLE设备: 然后调用scanLeDevice(),它管理蓝牙适配器以启动BLE扫描: 现在,通过扫描找到的每个设备的回调: 每次我要扫描我的BLE设备(具有外围角色),大约需要11秒来检测它。。。 有没有办法减少这一时间?

  • 本文向大家介绍PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法,包括了PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法。分享给大家供大家参考,具体如下: PHP计算大数值运算时会出错,当数字太大时,数值会变成科学计数.那怎么来进行PHP超大数值运算,包括加减乘

  • 我从用户那里读取了一个字符串。然后,当我使用字符串时,我看到它被缩短了。我不知道怎么做或者为什么?我需要整个,而不仅仅是其中的一部分! 代码如下: 运行示例: 示例输出为:

  • 问题内容: 我发现如果在开始时初始化一个空字典,然后在for循环中向字典中添加元素(大约110,000个键,每个键的值是一个列表,并且在循环中也在增加),则速度会降低循环。 我怀疑问题在于,字典在初始化时不知道键的数量,并且执行的操作也不是很聪明,因此存储冲突可能会变得很频繁并且会减慢速度。 如果我知道键的数量以及这些键的确切含义,python中有什么方法可以使字典(或哈希表)更有效地工作?我隐约

  • 我有一个字符串: 它需要缩短,所以看起来像这样: 所以基本上,它需要使用所有重复的字符,并写下它们重复的次数,而不是打印它们。我设法做到了一半: 但这只适用于重复的字符,而不是模式。我可以通过在字符串中找到ab模式来做到这一点,但这需要对每一个可能的字符串都是可行的。有人遇到过类似的事情吗?