【问题标题】:evaluate expression in java [closed]在java中评估表达式[关闭]
【发布时间】:2016-05-26 15:23:15
【问题描述】:

有人可以帮我在 java 中存储 -1.0539727e+15。我从来没有遇到过必须存储这样一个数字,所以不知道最好的数据类型是什么

【问题讨论】:

  • 默认是double,所以除非你有其他要求,否则我会使用它
  • @MGoksu:这不是 OP 要求的;您在问题中看到 30 位数字吗?
  • 仅供参考: 从 cmets 到 answer by ScottHunter,请注意 OP 确实是在评估表达式 30414870689655. - 8771520344379536 之后,即使问题文本什么也没说。

标签: java types


【解决方案1】:

我想你正在寻找double

【讨论】:

  • 我试过双精度,我以为它会是双精度,但我试图从一个字符串中解析它,这在线程“main”java.lang.NumberFormatException中给出了这个异常异常:对于输入字符串: "30414870689655.-8771520344379536" at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) at sun.misc.FloatingDecimal.parseDouble(Unknown Source) at java.lang.Double.parseDouble(Unknown Source) at try2.main (try2.java:34)
  • 30414870689655.-8771520344379536 不是任何种数字。
  • @JordanFrampton -1.0539727e+15 是一个有效的 double 值。 30414870689655.-8771520344379536 在任何系统中都不是有效的数值。
  • 我是这么想的,但是讲师认为是这样,所以在谷歌中输入它会返回 -8.7411055e+15,这是我认为我需要到达的数字
  • @JordanFrampton:这不是一个数字,它是一个计算结果为数字的表达式; parseDouble 不进行评估。
【解决方案2】:

试试这个:

    double d = 2e-6;
    double f = -1.0539727e15;
    System.out.println(d);
    System.out.println(f);
    System.out.printf("d: %f\n", d);
    System.out.printf("f: %f\n", f);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多