java 公式计算_java 自定义公式计算

本文介绍如何使用Groovy脚本进行运维费用计算,通过设置系数和变量值,实现F、T、A和评价P的综合计算,并展示了两种不同的计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 公式计算-自定义公式

// 公式:运维单数F*系数f1 + 运单价格T*系数t1 +总价A*系数a1 +评价P*系数P1

/*

* org.codehaus.groovy

* groovy-all2.4.7

*/

public static double countGrovovy() {

Binding binding = new Binding();

// 值

binding.setVariable("F", 150);

binding.setVariable("T", 60000);

binding.setVariable("A", 300000);

binding.setVariable("P", 10);

// 系数

binding.setVariable("F1", 1.2);

binding.setVariable("T1", 1.7);

binding.setVariable("A1", 1.2);

binding.setVariable("P1", 0.5);

binding.setVariable("language", "Groovy");

GroovyShell shell = new GroovyShell(binding);

Object F1 = shell.evaluate("P2=F*F1 + T*T1 +A*A1 +P*P1; return P2 ");

// Object F2 = shell.evaluate("P1=P0*(0.055*0.20+1.0011)+A; return P1 ");

double d = (150 * 1.2) + (60000 * 1.7) + (300000 * 1.2) + (10 * 0.5);

System.out.println("手动计算:" + d);

System.out.println("自定义公式计算:" + F1);

// System.out.println(F2);

return Double.valueOf(F1.toString());

}

// 自定义公式2

public static double countGrovovy2() {

ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");

Compilable compilable = (Compilable) engine;

Bindings bindings = engine.createBindings(); // Local级别的Binding

String script = "F*F1 + T*T1 +A*A1 +P*P1"; // 定义函数并调用

CompiledScript JSFunction = null; // 解析编译脚本函数

try {

JSFunction = compilable.compile(script);

bindings.put("F", 150);

bindings.put("T", 60000);

bindings.put("A", 300000);

bindings.put("P", 10);

// 系数

bindings.put("F1", 1.2);

bindings.put("T1", 1.7);

bindings.put("A1", 1.2);

bindings.put("P1", 0.5);

Object result = JSFunction.eval(bindings);

System.out.println("自定义公式2:==" + result); // 调用缓存着的脚本函数对象,Bindings作为参数容器传入

return Double.valueOf(result.toString());

} catch (javax.script.ScriptException e) {

e.printStackTrace();

return 0;

}

// return Double.valueOf(result.toString());

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值