銀行は実際にお金のデータ型として何を使用していますか?[閉まっている]


9

私はいくつかの良いオプションを知っています

  1. セントまたは10 -nセントを表す大きな整数(int64_t、mpz_t、任意のbignum libなど)-たとえば、整数はペニーの1/100を表します($ 1.05 == 10500)。これは、スケーリングされた整数と呼ばます。

  2. JavaのBigDecimal、PythonのDecimal、JavaScriptのdecimal.js、C ++のboost :: multiprecision などの任意精度の10進数演算用の高レベルライブラリ

  3. 文字列。

  4. パックBCD(2進化10進数)は、より難解な方法で、古いソフトウェアでは一般的でした。それについてもっと読んでください

銀行(またはクレジットカード、ATM、POSシステム)の量産コードで、実際に最も使用されているデータタイプはどれですか。特に銀行に勤めた方にお願いします。

編集:同じ問題ドメインを持つ人々にとって非常に便利なリンク(壊れない「お金」のデータ構造を実装する必要がある)。

これは重複する質問であると言ったフェローのためのEDIT:これは、「何が最良か」の理論的な質問ではなく、実際的な質問です。私の質問の未編集のタイトルを読んでください。銀行のコードベースで人々が直接目にしたものを尋ねています。

BigDecimalが「最高」であることは明らかですが、そのような素晴らしいAPIはどこでも利用できるわけではなく、信じられないかもしれません。また、10進数ライブラリはintとは対照的に高価です。


4
銀行に特に関係はないが、銀行の種類。数年前、私はトランザクションと支払いを処理するシステムに取り組み、完全に新しいデータ型、つまり2つだけでなく2つの64ビット整数で構成されるクラス(1つは整数を表し、もう1つは小数部を含む)を導入してフロートバグを回避しました。
アンディ

1
それは素晴らしいアイデアです。大きな数値と指数(値のlog_10)の2つの整数の構造体である一般的な実装よりも優れていると思います
zelcon

1
質問には4番目のオプションが必要です:BCD
ブレンダン

3
タイトルの質問に答えるために、COBOL S9(13)V99 COMP-3。8 8ビットバイトに収まります。
Gilbert Le Blanc

2
ここにある問題は「どの銀行」かです。それらはCOBOL、Java、C / C ++ 、. NETなどを使用します-これらのそれぞれが異なるタイプを使用するため、知りたいことに適合する答えはありません。バッキングストレージについて質問することもできますが、使用するテクノロジに応じて、Oracleの10進数タイプまたはメインフレームタイプが使用されます。
gbjbaanb 2016

回答:


-2

ほとんどの銀行はまだメインフレームにあります。メインフレーム上のデータ型は、今日の標準に対して非常に不格好です。それらは、文字としてエンコードされた単なる数字である場合があります。したがって、1234.56は実際にはこれらの数字を含む文字列になります。また、文字は4、6、または9ビットにすることができます。または、「最適化された」状況では、1つの文字に2桁の数字が含まれる場合があります。結局のところ、小数点文字に必要なのは4ビット(ニブル)だけです。

あなたはいったいどのようにして彼らがこれまでにこれらの解決策に対抗したのか疑問に思うでしょう。多くの場合、ハードウェアアーキテクチャに基づいています。8ビットアーキテクチャの倍数に慣れています。昔はこれは当たり前ではありませんでした。

Unisysは36ビットワードを使用します。ワードは、データの格納に使用される前に、6ビット、9ビット、12ビット、または18ビットの部分に分割される場合があります。

この問題に対処する必要がなくなることをうれしく思います。.NETフレームワークには、通貨に適したdecimalと呼ばれる素晴らしい型があります。


1
@gnat:これは1年前のものであり、いくぶん利己的です。銀行は財務データをどのように維持しますか?メインフレーム
Gilbert Le Blanc

2
-1は「メインフレームのデータ型は、今日の標準に対して非常に不格好です。」メインフレームについて何も知らないことは明らかです。IEEE-754 float、decimal data などがたくさんあります。
ロスパターソン

1
@Ross IEEE 754は1985年に設立されました。メインフレームソフトウェアの多くは古くなっています。BCDおよび同様のエンコーディングは、アクティブなメインフレームシステムではまだ非常に一般的です。そして、それらは最新のエンコーディングと比較することはできません。ただし、質問に対する正しい答えを教えてください。あなたは明らかにメインフレームについてたくさん知っています。あなたのタイミングは数十年ずれているようですが...私たちを啓発します。
Martin Maat

1
。古風でありながら高速なデータ処理を備えたメインフレームがあることを感謝します。
gbjbaanb 2016

1
@MartinMaatパック10進数は、1972年にプログラミングを始めたときの通貨値で最も一般的でした。これは、IBM S / 360ファミリのベースデータ型であり、それ以前の1400シリーズの商用オプションの一部であったと思います。
ロスパターソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.