我剛剛完成了對Java,Groovy和Scala的評估。使用BigDecimal時Groovy作爲Java的替代品?
我考慮的因素是:可讀性,精密
我想知道的因素:性能,易於集成
我需要的精度一個BigDecimal水平。
這裏是我的結果:
的Java
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)));
}
Groovy的
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中,我使用了靜態導入。
爪哇: 優點:它是爪哇
缺點:沒有操作員重載(批次O方法),勉強可讀/可編碼
Groovy的: 優點:默認的BigDecimal表示沒有可見的打字,至少所有操作令人驚訝的BigDecimal支持(包括師)
缺點:另一種語言的學習
斯卡拉: 優點:具有運算符重載爲BigDecimal的
缺點:與師(固定DECIMAL128)一些令人吃驚的行爲,另一種語言的學習
儘管標題末尾有問號,但這似乎並不是一個問題。 – 2010-04-23 15:14:06
@克里斯戴爾。你是對的,這裏並沒有真正的問題。 – 2010-04-23 15:17:23
如果你不期望任何特定的精度,你怎麼能不被分裂感到驚訝?在數學上我不知道我應該期待什麼。 – 2010-04-23 16:02:42