我刚刚完成了对 Java、Groovy 和 Scala 的评估。
我考虑的因素是:可读性、精度
我想知道的因素:性能、易于集成
我需要 BigDecimal 级别的精度。
这是我的结果:
爪哇
void someOp()
{
BigDecimal del_theta_1 = toDec(6);
BigDecimal del_theta_2 = toDec(2);
BigDecimal del_theta_m = toDec(0);
del_theta_m = abs(del_theta_1.subtract(del_theta_2))
.divide(log(del_theta_1.divide(del_theta_2)));
}
时髦的
void someOp()
{
def del_theta_1 = 6.0
def del_theta_2 = 2.0
def del_theta_m = 0.0
del_theta_m = Math.abs(del_theta_1 - del_theta_2) / Math.log(del_theta_1 / del_theta_2);
}
斯卡拉
def other(){
var del_theta_1 = toDec(6);
var del_theta_2 = toDec(2);
var del_theta_m = toDec(0);
del_theta_m = (
abs(del_theta_1 - del_theta_2)
/ log(del_theta_1 / del_theta_2)
)
}
请注意,在 Java 和 Scala 中,我使用了静态导入。
Java:
优点:它是 Java
缺点:没有运算符重载(很多方法),几乎不可读/可编码
Groovy:
优点:默认 BigDecimal 意味着没有可见的输入,最令人惊讶的是 BigDecimal 支持所有操作(包括除法)
缺点:另一种要学习的语言
Scala:
优点:BigDecimal 有运算符重载
缺点:除法的一些令人惊讶的行为(用 Decimal128 修复),另一种要学习的语言