アプリの Math ベースのモジュールを Java からスクリプト言語に切り替えたいと考えています。これは、mathy Java の読みやすさと機能上の制限によるものです。
たとえば、Javaではこれがあります:
BigDecimal x = new BigDecimal("1.1");
BigDecimal y = new BigDecimal("1.1");
BigDecimal z = x.multiply(y.exp(new BigDecimal("2"));
ご覧のとおり、BigDecimal 演算子のオーバーロードがなければ、単純な数式がすぐに複雑になります。
double の場合、これは問題ないように見えますが、精度が必要です。
私はScalaでこれができることを望んでいました:
var x = 1.1;
var y = 0.1;
print(x + y);
そして、デフォルトでは小数のような振る舞いをしますが、悲しいことに、Scala はデフォルトで小数計算を使用しません。
次に、Scala で次のようにします。
var x = BigDecimal(1.1);
var y = BigDecimal(0.1);
println(x + y);
そして、私はまだ不正確な結果を得ています。
Scala で正しく行っていないことはありますか?
おそらく、Groovy を使用して読みやすさを最大化する必要があります (デフォルトでは小数を使用します)。