JavaSE の の移植に成功しましたBigDecimal
。これらの他のクラスも移植する必要がありました。
- 同程度の
- 番号
- BigInteger
- ビットシーブ
- MutableBigInteger
- SignedMutableBigInteger
基本的に、ジェネリック、いくつかのシリアル化メソッド、素数に関連するほぼすべてのメソッドを削除し、同様のメソッドBigInteger
に置き換える必要がありました。メソッドint[].clone()
の微調整も。compareTo
私の目標は、任意の精度を達成し、String から BigDecimal に変換することだけでした。他には何も必要ありませんでした。
更新:機能していません!!!
ソースコードを取得するときに、さまざまなソースのクラスを混合したようです (OpenJDK、Oracle JavaSE などからのクラス)。これらはすべて Java 6 用でしたが、異なるバージョン リリース間で大きな変更がいくつかあることに気付きました。それらはうまく相互運用されていないことが判明したため (または、それらのいくつかに深刻なバグが含まれていますが、私はそうは思いません)、移植は大きな失敗に終わりました。これをできるだけ早く解決する必要があるため、次の代替手段を探しています。
- Paypal は Mobile Payment API をリリースしました。BlackBerry ライブラリには BigDecimal ポートが含まれています。OpenSource ではなく、クラスが難読化されていますが、今のところ正常に動作していると言えます。必要なクラス ファイルは 3 つだけです。Paypalのものなので、徹底的にテストされていると思います(少なくともそう願っています)。
- bouncycastle の SimpleBigDecimal もありますが、Paypal や Java ほど強力ではありません。このクラスが提供しない String コンストラクターを持つことに興味がありました。
- JavaSE v1.4.2を使用すると、JavaSEからの移植が簡単になると思います。Generics がないため、開発が速いかもしれませんが、これらの古いクラスは 1.6 または 1.7 の新しいクラスほど堅牢ではない可能性があるため、これには乗り気ではありません。
- 特定のスケール (1 桁または 2 桁) と縮小されたメソッド セット (基本的には比較、加算、減算) に対して独自の縮小クラスを実装できますが、より一般的なソリューションが必要です。簡単な回避策。
更新:
最後に、BlackBerry 用の Mobility Payment Library に含まれている PayPal の BigDecimal ポートを使用しました。BlackBerry は J2ME に基づいているため、このタスクに最適です。かなりの量の単体テストを行いましたが、JavaSE の BigDecimal の動作と一致していると言えます。