2009-08-31 10 views
0

ドル/セントの場合、コスト/価格/金額をCAD/USDで別々に保管するクラスを、私は "PriceInDollars"を持っていますが、私はそれが本当に好きではありません。私はいつもそれを忘れています。何か案は?Java - お金クラスの名前

編集:明らかに私はBigDecimalを使用して、ホイールを改造しないでください。私はちょうどそれを使用すると思います。私は自分のクラスを作ることをたくさん学んだ。

私の他の質問を参照してくださいhere

+1

名前を付けずに既存のクラスを使用していると考えましたか? http://jscience.org/ –

+0

合意。これがBigDecimalの目的です。 long-basedソリューションはfloatを使用するよりはるかに優れていますが、財務アプリケーションでは法律で義務付けられている丸めモードはまだカバーしていない可能性があります。 –

+0

私は同意しません。より具体的なオブジェクトを作成するには、プリミティブなどを使用する必要がありますが、最終的には、彼が行っているコンセプトを独自にキャプチャするものが必要です。 IPv4アドレスはintではなく、文字列でもありません。いずれかで表すことができます。 IPv4アドレスクラスを構築するには、intsとStringsを使用します。とりわけ、ホイールを再発明しないでください。誰かがあなたのオブジェクトのコンセプトをキャプチャしたクラスをすでに作成している場合は、それを使用してください。 – Omniwombat

答えて

6

私はPriceまたはCostのいずれかとなるだろう。どちらを選んでも、より具体的になるようにサブクラス化することができます。

MoneyCurrencyは、価格の属性と同じように見えますが、価格自体の名前としてはあまり適していません。ちょうど私の2セント(馬鹿に耐えられなかった)。私は法案やコインの形で「現金」

http://www.answers.com/topic/cash マネーを使用することになり

+0

通貨私は同意しますが、どのようにして「金」が価格の属性として解釈されるのでしょうか? –

+0

@ラウレンス:私は異なる通貨で来るMoneyクラスを考えていました。価格の*属性*は、私が思っていることの全く正確な記述ではないかもしれません。 Mk12が記述しているクラスの概念はあまりにも抽象的であると感じます。 –

+0

私は '通貨'に同意していません。標準のAPIクラス 'java.util.Currency'が既に存在するからです。 (金額ではなく、通貨コードのみを表していることに注意してください)。 – Jesper

1
  • Currency
  • Money
  • Price
  • Value(私はいないだろう、しかし)
+0

素早い答えをありがとう。私は通貨ではなく、特定の通貨の金額であるため、通貨と一緒に行きたいと思っています。同じことがお金のために行く、価値が十分ではない、それは私が持っていたものよりも良い価格を残す、私は推測する、私はInDollarsを指定する必要はないと思う...私は、私が好きなことを言う。ありがとう! – mk12

+0

以前の人生では、より冗長なCurrencyUnitsを利用しました。 Meh。 – DarkSquid

0

。通貨。 通貨または小切手による商品またはサービスの支払い。

通貨の種類に固有のものではなく、コンバージョンなどのために追加できる動詞がたくさんあります。

+2

現金を除き、少なくともネイティブスピーカーには、政府が紙幣や硬貨として発行する通貨の特定の形式を表す、非常に具体的な意味があります。小切手は現金とはみなされません。また、いくつかの良いサービスやサービスの "現金"のコストの抽象的な概念もありません。むしろ「現金」は、金銭の一部の移転を行うために使用される1つの形式です。 –

1

なぜMoneyが悪い選択ですか? java.util.Currencyに沿って全体と小数部分をクラスにカプセル化することは、BigDecimal、IMOより優れた設計です。

"InDollars"で終わるものは好きではありません。なぜなら、デザインを不必要にUSDやCADにぶつけてしまうからです。アイデアがより一般的なのなら、それはなぜですか?

+0

もちろん、必要に応じて通貨を額と一緒に束ねるのは良いことです。しかし、BigDecimalと比較して、量を表現するのに「全体と小数部」の長所を単一の利点として挙げます。 –

+0

丸めに心配はありません。 – duffymo

1

私は私MonetaryAmount呼ばれてきました:-)

0

MonetaryValue。

3

最初に、私はBigDecimalを使用すると言うすべての人に同意しません。たとえ 'バッキングストレージ'がBigDecimal(非常に賢明です)でも、BigDecimalフィールド、メソッドパラメータなどがセマンティクスを持たないため、独自のクラスを使用する必要があります。通貨金額のようなよく再利用されるタイプは、には独自のクラスがあります。

すべては、あなた自身を書いてはいけないと言いました。すでに存在し、あなたのために多くの問題を考えてきたライブラリがたくさんあります。個人的には、スティーブン・コールボーン(Joda-Time名義人)のJoda-Moneyで始まります。

+0

また、BigDecimalは、通貨(USD、CADなど)ではなく、数値のみを格納します。 – Jesper

0

Amountとし、java.util.Currencylongの単位を保持します。

私はさまざまなプロジェクトで使ってきたmy own Amount classです。 Comparableを実装し、表示する金額を書式設定する方法を使用しています(金額の書式設定ではロケールは考慮されません)。toString

関連する問題