問題タブ [decimal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
decimal - 大きな数を10進数に変換するにはどうすればよいですか?
0x34363932353433373538323038353135353439
c# - C#で数値を小数点以下2桁に丸めるにはどうすればよいですか?
Math.Round
関数を使用してこれを行いたい
java - ダブルの小数点以下の桁数が最大nかどうかを確認するにはどうすればよいですか?
現在、私はこの方法を持っています:
checkDecmialPlaces(649632196443.4279, 4)
しかし、おそらく私が基数2の数値に基づいて基数10の計算を行うため、この方法は失敗します。
では、このチェックを正しく行うにはどうすればよいでしょうか。
double値の文字列表現を取得し、それを正規表現で確認することを考えましたが、それは奇妙に感じました。
編集: すべての答えをありがとう。私が実際にダブルを取得する場合があり、それらの場合のために私は以下を実装しました:
round
を切り捨てに変更しました。で行われた計算round
により、不正確さが大きくなりすぎるようです。少なくとも失敗したテストケースでは。「実際の」文字列入力に到達できるかどうかを確認するために
使用する必要があると指摘された方もいらっしゃるので、次のようにしました。BigDecimal
私が得る価値は、double
Excelファイルを読み取るApachePOIAPIから得られます。いくつかのテストを行ったところ、APIはdouble
数値セルの値を返しますが、すぐに次のようにフォーマットすると正確な表現を取得できることがdouble
わかりましたDecimalFormat
。
これは、バイナリ形式で正確に表すことができない値に対しても機能します。
python - floatとdecimal.Decimalの小数点以下の桁数の問題
フロートでかなりの精度を失っているようです。
たとえば、行列を解く必要があります。
これは、テキストファイルからマトリックスをインポートするために使用するコードです。
ガウス・ザイデルを使用して解く必要があるため、x、y、zの方程式を再配置する必要があります。
これが私が方程式を再配置するために使用するコードです。b
は係数の行列であり、y
は答えベクトルです。
しかし、私が返す答えは小数点以下の桁数まで正確ではありません。
たとえば、上から2番目の方程式を並べ替えると、次のようになります。
私が得るものは:
これは大きな問題ではないように思われるかもしれませんが、数値を非常に高い累乗に上げると、エラーは非常に大きくなります。これを回避する方法はありますか?クラスを試しましたDecimal
が、パワー(つまり)ではうまく機能しませんDecimal(x)**2
。
何か案は?
asp-classic - ASP/VBScript の「落とし穴」
Classic ASP/VBScript で記述された Web アプリケーションをサポート/強化しています。どちらも日常的に使用してから約10年になります。「落とし穴」と見なす問題に出くわしたばかりで、他の人にも同様のことを知っておく必要があるかどうか疑問に思っていました。
私の問題:
SQL テーブルの列を float から decimal に変換する必要がありました。decimal は、vbscript で実際にサポートされている (または適切にサポートされている) 型ではないことがわかりました。したがって、次のコード:
次の行で Type Mismatch エラーが発生します。
よく調べた結果、次のことがわかりました。
問題を解決します。しかし、それは明白なことのようには思えず、その行で Type Mismatch が発生した理由を理解するのにしばらく時間がかかりました.
皆さんへの私の質問は、このような他の小さな癖に出くわしたことがありますか? ASP/vbscript で気をつけなければならない「落とし穴」と思われるものは何ですか?
tsql - t-sql 10 進代入は値を変更します
以下の select ステートメントが 2 つの異なる値を返すのはなぜですか?
c++ - C++で10進値を切り捨てます
0.6000002の値を持つC++float
変数を0.6000の値に切り捨てて、変数に格納する最も簡単な方法は何ですか?
python - Python float から Decimal への変換
Python Decimal は float からの構築をサポートしていません。最初に float を文字列に変換する必要があると想定しています。
float の標準的な文字列フォーマッタでは、有効桁数ではなく小数点以下の桁数を指定する必要があるため、これは非常に不便です。したがって、小数点以下 15 桁までの数値がある場合は、 のようにフォーマットする必要がありますDecimal("%.15f" % my_float)
。これにより、10 進数の前に有効桁数がある場合、小数点以下 15 桁にゴミが表示されます ( Decimal("%.15f" % 100000.3) == Decimal('100000.300000000002910')
)。
float から Decimal に変換して、ユーザーが入力した値を維持する良い方法を誰かが提案できますか? サポートできる有効桁数を制限する可能性がありますか?
c# - ダブルはお金に本当に不向きですか?
私は常に c# で double 型の変数はお金に適していないと言います。すべての奇妙なことが起こる可能性があります。しかし、これらの問題のいくつかを示す例を作成することはできないようです。誰かがそのような例を提供できますか?
(編集; この投稿はもともと C# というタグが付けられていました; 一部の返信は の特定の詳細に言及してdecimal
いるため、 を意味しますSystem.Decimal
)。
(編集 2: 私は具体的にいくつかの C# コードを求めていたので、これは言語にとらわれないだけではないと思います)
double - 10 進数と 2 倍速
私は、2 倍を使用するか 10 進数を使用するかの決定と常に戦っている金融アプリケーションを作成しています。
私の数学はすべて、小数点以下 5 桁までで、100,000 以下の数値で機能します。とにかく丸め誤差なしでこれらすべてを double として表すことができると感じていますが、確信が持てませんでした。
10 進数から 2 進数に切り替えて明らかに速度を向上させますが、結局のところ、ToString メソッドを使用して価格を取引所に送信し、常に値を出力するようにする必要があります。予想。(89.99000000001 の代わりに 89.99)
質問:
- 単純なテストが示すように、速度の利点は本当に大きいのでしょうか? (~100回)
- ToString からの出力が私が望むものであることを保証する方法はありますか? これは、私の番号が常に表現可能であるという事実によって保証されますか?
更新: アプリを実行する前に ~ 100 億の価格更新を処理する必要があり、明らかな保護上の理由から現在 10 進数で実装していますが、電源を入れるだけで ~3 時間かかります。 . ダブルスで安全に行う方法はありますか?