問題タブ [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.

0 投票する
7 に答える
12339 参照

javascript - JavaScriptで未使用の小数を切り刻む

通貨の入力があり、有効数字のみを返す必要があります。入力には常に小数点以下 2 桁があるため、次のようになります。

これが私が現在行っている方法です:

それは機能し、私が好きな特定の直接性を持っていますが、もっときれいな方法があるかもしれません.

ループを使用して 3 回実行することもできると思いますが、実際には、if ステートメントを条件付けするまでには、少なくとも同じくらい大きくなるようです。それ以外に、何かアイデアはありますか?それを行う正規表現の方法もあると思います....

0 投票する
4 に答える
6140 参照

php - PHP - 10 進数値の配列の合計

PHP で 10 進数値の配列の合計を計算しようとしていますが、何らかの理由で整数に丸められ続けます。

例えば:

$oldArray には、実際には SQL クエリからの 10 進数値が取り込まれます ($oldarray の長さは約数百ですが、最初の 10 が必要です。上記の例では、$myVar が 10 進数であると予想していますが、実際にはfor ループの前に $myVar = 0.0000 を設定しようとしたり、$myVar += $oldArray[$k] + 0.0000 などを試したりしましたが、何も動作しないようです。

私は何を間違っていますか?$myVar を明示的に 10 進数に設定するにはどうすればよいですか?

0 投票する
4 に答える
10623 参照

sql - SQL Serverは10進数を挿入しますが、Intを選択します

2つのdecimal(18,0)フィールドを持つテーブルがあります。

このテーブルに2つの10進値を挿入しています。たとえば、1.11

(キャストなしで)テーブルから選択すると、1が得られます。

私はすべての鋭敏さを失っています、そして私は理由がわかりません。

TEST値に挿入(153、'test'、'test'、1、1、1.11、1.11)

TESTから*を選択すると、1.11,1.11ではなく1と1になります。

何か案は?

0 投票する
3 に答える
12434 参照

python - python小数比較

python小数比較

2.0 が正しく変換されることを期待していましたが、PEP 327を読んだ後、float を Decimal に暗黙的に変換しない何らかの理由があることを理解しましたが、この場合のように TypeError を発生させるべきではありません。

他のすべての演算子もそうです / - % // など

だから私の質問は

  1. これは正しい行動ですか?(cmpで例外を発生させないでください)
  2. 独自のクラスを派生させ、基本的に Decimal(repr(float_value)) の float コンバーターを正しく使用する場合、注意事項はありますか? 私のユースケースには、価格の比較のみが含まれます

システムの詳細: Ubuntu 8.04.1 上の Python 2.5.2

0 投票する
2 に答える
6057 参照

php - PHP/MySQL: ベスト マネー オペレーション/ストア プラクティス?

そこで、お金をたくさん扱うアプリケーション(PHP/MySQL)を作ろうと考えており、PHPのfloatデータ型やMySQLの10進数を参考にしながら、お金をどうやって貯めて運用していくかを考えています。

2つの選択肢を考えていました。そのうちの 1 つは、浮動小数点数の不正確さを処理せず、DB にも整数として格納するために、通貨を整数セント形式 ($dollars * 100) で操作および格納することです。もう 1 つは、DB に 10 進数として格納し、計算に PHP で BC Math を使用することです。

そのため、どのオプションを使用するのが最適かを一晩中グーグル検索しましたが、明確な答えは見つかりませんでした。私が見た唯一の合理的なオプションは、整数のセント 1 でした (これは、ブラウザーに表示するたびに DB に保存する前に、ドルからセントに、またはその逆に多くの変換を行うことを意味するため、あまり好きではありません)。

また、MySQL の 10 進数 (MySQL は 10 進数を文字列として格納し、浮動小数点数として操作するなど) について不満を言う人もいますが、それは古い投稿でした。MySQL のドキュメントによると、現在のバージョンは小数を正しく処理しますが、唯一の不満は、宣言された小数部の長さを超える値の小数部を切り捨てることでした (たとえば、decimal(9,2) と宣言された列に 12.326 の値を格納する場合)。 、しかし、私の調査では、単に切り捨てるのではなく丸めます (12.326 は 12.33 になります)。これは私の意見では正しいです。

また、お金を小数として格納し、PHP BCMath を使用して計算を行うことに関する推奨事項は見つかりませんでした。これは、BC および GMP 数学関数について知っている人がほとんどいないためだと思います。

では、精度、速度 (BCMath の計算速度、MySQL の 10 進速度と整数)、およびプログラミングの快適さを考慮して、どのオプションを使用するのが最適でしょうか?

0 投票する
15 に答える
64000 参照

c++ - C / C ++は小数点以下の数を数えますか?

ユーザーからの入力が10進数であるとしましょう。5. 2155(小数点以下4桁)。自由に保存できます(int、double)など。

数値の小数点以下の桁数を調べるための賢い(または非常に簡単な)方法はありますか?(最後のビットをマスクすることによって、数値が偶数または奇数であることをどのように見つけるかという質問のようなものです)。

0 投票する
4 に答える
24162 参照

c# - intを小数として箱から出せないのはなぜですか?

IDataRecord reader次のように小数を取得していることがあります。

何らかの理由で、これは「指定されたキャストが無効です」という無効なキャスト例外をスローします。

私がそうするときreader[0].GetType()、それはそれがInt32であることを私に告げます。私の知る限り、これは問題ではないはずです。

私はこれをこのスニペットでテストしましたが、これは問題なく機能します。

これにより、リーダーに含まれるintを小数としてアンボックス化できないのはなぜかと頭を悩ませました。

なぜこれが起こっているのか誰かが知っていますか?私が見逃している微妙なものはありますか?

0 投票する
8 に答える
256371 参照

python - Python で 10 進数を使用して文字列を整数に変換する

Python で「nn.nnnnn」という形式の文字列があり、それを整数に変換したいと考えています。

直接変換が失敗する:

次を使用して小数に変換できます。

'.' で分割して、0 から 10 進数を引き、それを整数に足すこともできます。

しかし、不必要な型変換や操作を行わずに、int として使用することをお勧めします。

0 投票する
3 に答える
992 参照

c# - dotNet 10 進数型はバイナリ比較エラーに対して脆弱ですか?

数か月ごとに遭遇するエラーの 1 つに、次のようなものがあります。

「x が y に等しい」と表示するコードを想定するかもしれませんが、そうではありません。
簡単な説明は、小数点以下の桁数が 2 進数として表されるため、double に収まらないということです。

例: 2.625 は次のようになります。

10.101

なぜなら

また、一部の値 (19.08 と 2.01 の結果など) は double のビットで表現できません。

1 つの解決策は、定数を使用することです。

最初の例で double の代わりに decimal を使用すると、結果は "x equals y" になります。
しかし、これが「10進数」タイプがこの動作の脆弱性ではないためか、値が128ビットに「適合」するため、この場合は機能するかを自問しています。

誰かが定数を使用するよりも良い解決策を持っているのではないでしょうか?

ところで。これは dotNet/C# の問題ではなく、ほとんどのプログラミング言語で発生すると思います。

0 投票する
3 に答える
16789 参照

python - Pythonで分数の循環小数セクションを取得する方法はありますか?

Pythonのdecimalモジュールを使用して分数を処理していますが、特定の分数の繰り返し部分だけを取得したいと思います。例:1/3の場合は3を取得したいのですが、1/7の場合は142857を取得したいのです。これを行うための標準機能はありますか?