私はfinancial .netアプリケーションをサポートしています。財布にのデータ型を使用するには、多くのアドバイスがあります。10進数vs doubleもう一度
は今、私はこれで立ち往生しています:
decimal price = 1.0m/12.0m;
decimal quantity = 2637.18m;
decimal result = price * quantity; //results in 219.76499999999999999999999991
問題は私達の顧客を充電するための正しい値は219.77(ラウンド機能、MidpointRounding.AwayFromZero)とない219.76であるということです。
double price = 1.0/12.0;
double quantity = 2637.18;
double result = price * quantity; //results in 219.765
は私が倍増するすべてのものを変更しなければならない。私は倍増するすべてのものを変更した場合
は、それが動作しているようですか?分数には他の問題がありますか?
私はより正確なデータ型を持つ結果小数点がどのダブルデータ型で結果よりも(上記のサンプルでは)それほど正確である理由、それは本当に私に説明していないので、この質問はDifference between decimal, float and double in .NET?異なっていると思いますより少ないバイトを使用します。
[.NETの10進数、浮動小数点数、および倍精度の違い]の可能な複製?(http://stackoverflow.com/questions/618535/difference-between-decimal-float-and-double-in-net) –
ちょうどあなたが12本の指で数えない限り、計算の基本的な欠陥、1/12は決して完璧な結果をもたらしません。どのような種類の会社が、顧客に1ドルの12分の1アイテムを請求しているのですか?まず、単価を正しく取得する必要があります。 –
「私はすべてを二重に変えなければなりませんか」 - なぜですか? Hansが指摘しているように、単価を表現するのが容易ではない奇妙な出発点がありますが、その点を指摘したいと思います。とにかくあなたのユニットを細分することができるので、ユニット単価ではありません)。あなたの数量のより良い表現*を選ぶ方が良いでしょう。そうでない可能性があるので、 'decimal'が適合し、' double'が間違った結果を生成する等しく反対の例を見つけることが可能です。 –