税金を計算することは、さまざまな理由から簡単です。すでに税理区について言及しています。その他の理由には、
- 商品固有の税金が含まれます。たとえば、ニュージャージー州は衣料品に税金を課さなかった。
- 税金休暇の週末。学校の直前の非常に一般的な例です。例えば、
- ポリシーに基づいた控除。高効率機器のための控除のように
したがって、パッケージを購入してそれと統合することは本当に良い考えです。メンテナンスライセンスを購入すれば、メタデータの更新を毎年取得することができます。
プログラミングの観点からは、税金を計算するためにツリーのような構造を使用することができます。ここで私はそれを設定する方法です。このような
まず、定義するいくつかの構造:
public class AddedTaxes {
public void add(double amount, double description) { ... }
}
public interface TaxAdder extends Serializable {
void configure(Map<String, String> settings);
add(double preTax, AddedTaxes taxes, Object productDetails);
}
第二に、加算器の必要な一連の構築:
public class FixedRate implements TaxAdder {
private double _rate;
private String _description;
public void configure(Map<String, String> settings) {
_rate = Double.parseDouble(settings.get("rate%"))/100.0;
_description = settings.get("desc");
}
public add(double preTax, AddedTaxes taxes, Object productDetails) {
taxes.add(preTax * _rate, _description);
}
}
public class FixedProductSpecific implements TaxAdder {
private double _amount;
private String _product;
private String _description;
public void configure(Map<String, String> settings) {
_amount = Double.parseDouble(settings.get("amount"));
_product = settings.get("product");
_description = settings.get("desc");
}
public add(double preTax, AddedTaxes taxes, Object productDetails) {
if (_product.equals(productDetails)) {
taxes.add(_amount, _description);
}
}
}
第三に、私は1つの以上のヒト消耗品に税金のルールをキャプチャするだろうしファイル:
// zip code range <tab> adderClassName <tab> parameters
// general texas taxes
75000.0000-79999.9999 FixedRate rate%=8.25, desc=Sales tax
78700.0000-78999.9999 FixedProductSpecific amount=2.00 product=LeadAcidBattery desc=Lead acid battery sales
...
このデータは、データの「コンパイル」ステップを実行できます。たとえば、10-wayツリーを構築します。各ノード(葉だけでなく)には、TaxAddersのリストがあります。この場合、7/8/7
,7/8/8
および7/8/9
ノードだけが第2の加算器を有するが、7/5
,7/6
、 '7/7'、...は第1の加算器を有することになる。
完全な構造が組み立てられたら、シリアル化してください。コンパイルが完了しました。実行時には、シリアライズされた計算構造体をロードするだけで、与えられたzip + 4に対して木をたどって該当する電卓を見つけることができます。
データを維持したくない場合は、私が話している種類の変換を受けて、「コンパイル済み」計算構造を構築できます。
私はあなたが好きならもっと詳細を追加することができますが、これが興味のある方向に向いていることを知るまで、私はそれを延期しています。
300MBのファイルは正確には何ですか?注文の単純な売上税を計算しようとしているだけですか、複雑なルールをナビゲートしていますか? –
入力した住所からzip + 4を確認しようとしていますか? – JustinKSU