2017-09-07 24 views
0

PostgreSQLデータベースに値を格納する必要があります。値は12桁と小数点以下6桁です。 PostgreSQLによると、数値データ型を提供します。私はnumeric(18,6)でフィールドを作成しましたが、値を入力すると合計15桁の値しか受け入れられません。PostgresとJavascriptは小数点を含む15桁以上の数字をサポートする必要があります

番号123456789123.123456を格納しようとすると、番号が切り捨てられ、123456789123.123だけが格納されます。

JavaScriptでは、6桁の小数点を含む18桁の文字列を解析しようとすると、17桁の数字、12個の数字、5桁の小数点しか返しません。

var number = "123456789123.123456" 
console.log(parseFloat(number)); 

それは、このことについてどんな解決策がある場合のみ123456789123.12346

を出力しますか?

答えて

1

これは倍精度浮動小数点データ型の制限であり、JavaScriptまたはPostgres固有のものではありません。 Postgresは同じ倍精度浮動小数点型を使うことができます。あるいは、あなたが行ったように、異なるフォーマットで格納された任意の精度の数値をサポートします。

JavaScriptには、倍精度浮動小数点の数値データ型が1つしかありません。

これは精度制限はなく、 "17桁" であることに留意してください。 0.0000000000000003939393928293または129000000000000000000000000000を正常に保存できます。

より高い精度で作業する必要がある場合は、bignumber.jsのようなライブラリを使用できます。あなたは単純な演算子を使用する能力を失うので、num3 = num1 + num2num3 = num1.plus(num2)になりますが、必要な処理を行う必要があります。

関連する問題