Decimal128 (高精度小数)

最終更新:2026-10-09

Decimal128 (高精度小数)

Decimal128 は MongoDB の高精度小数型で、IEEE 754-2008 の十進浮動小数点標準に基づき、34桁の有効十進数字を持ちます。金額、レート、厳密な演算が必要なデータに適し、Double の二進丸め誤差を避けます。`Decimal128('19.99')` または mongosh 5.0+ の短縮形 `NumberDecimal('19.99')` で構築します。

カテゴリBSON 型
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

Decimal128("<decimal string>")
NumberDecimal("<decimal string>")  // mongosh 5.0+
{ price: Decimal128("19.99") }

戻り値:Decimal128 の BSON 値を返します

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// Decimal128: 構築して完全一致で検索する
use shop
db.prices.insertOne({ item: 'apple', price: Decimal128('19.99') })
db.prices.find({ price: { $eq: Decimal128('19.99') } })

出力:

{ _id: ObjectId('...'), item: 'apple', price: Decimal128('19.99') }

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

QDecimal128 と Double の違いは?
ADouble は二進浮動小数点で 0.1 が正確でありません。Decimal128 は十進数字(有効34桁)を格納し、正確な金額計算ができます。
QDecimal128 はどのくらい大きな値を保持できますか?
A指数範囲はおよそ ±6143、値範囲はおよそ ±9.99×10^6144 で、ビジネス上のあらゆるニーズを超えます。
Qなぜ価格を Decimal128 で格納するのですか?
A金額には正確な十進演算が必要です。Double の合計はずれます(例: 0.30000000000000004)。照合が壊れます。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%