【问题标题】:Two digits after dot in toStringtoString 中的点后两位数
【发布时间】:2017-04-28 17:54:06
【问题描述】:

我设法使这两个类成为,但“分数”必须在点后有 7 位数字。我无法修改 Main 类。我想我应该使用 String.format("%.7f", ...) 但我不知道在哪里。请帮忙。

主要:

public class Main {
    public static void main(String[] args) {
        Calc c = new Calc();
        String score = c.doCalc(args[0]);
        System.out.println(score);
    }
}

计算:

public class Calc {
    public String doCalc(String cmd) {
        ScriptEngineManager mgr = new ScriptEngineManager();
        ScriptEngine engine = mgr.getEngineByName("JavaScript");

        try {
            return engine.eval(cmd).toString();
        }
        catch (ScriptException e) {
            return "Invalid command to calc";
        }
    }
}

【问题讨论】:

    标签: java decimal digits


    【解决方案1】:

    您应该使用system.out.formatsystem.out.printf,而不是使用system.out.println。请参阅 Oracle 的简短教程here。为什么你不能修改主类?那似乎是你的分数被打印出来的地方..

    【讨论】:

    • 我知道我应该编辑 Main,但我不能,因为这是我的学习任务。我只能修改 Calc :/
    【解决方案2】:

    您可以将字符串结果解析回Double 并将其提供给String.format

    try {
        return String.format("%.7f", Double.valueOf(engine.eval(cmd).toString()));
    }
    catch (Exception e) {
        return "Invalid command to calc";
    }
    

    您当然可以将结果直接提供给String.format,而无需toStringvalueOf 往返,如下所示:

    return String.format("%.7f", engine.eval(cmd));
    

    但这仅在评估结果是有效浮点数时才有效。要处理整数或非数字等其他情况,您必须进行一些类型检查并使代码看起来更混乱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 2011-11-18
      • 1970-01-01
      • 2011-05-27
      相关资源
      最近更新 更多