2017-05-09 5 views
1

私の選択したクエリの列A +列B +列Cに3つの列を一緒に追加しています。しかし、回答が0になるべき特定の列は、1.36424205265939E-12、またはそれに類似するものとして渡ります。0を1.36424205265939E-12として表示しているSQLクエリー

例:私の数学は0 + 1414 + -1414です。答えは0になるはずですが、その代わりに私は1.36424205265939E-12の結果を得ています。

私のすべてのデータ型は浮動小数点型です。列BとCは一時表から来ており、列Aは通常表から来ています。

+3

あなたのデータ型は浮動小数点型であるため、期待されています。正確な結果が必要な場合は、正確なデータ型を使用してください。 – Lamak

+0

@Lamak - 小数点に変換すると同じ結果が得られます。 – Joey

+2

すべての数字を変換しない場合: 'CONVERT(DECIMAL(16,4)、0)+ .....' – Lamak

答えて

1

算術演算の前後の値を10進数に変換することができます。例えば、

select cast(Column A + Column B + Column C as decimal(28, 6)) 

で十分です。

浮動小数点演算を実際に行うには浮動小数点数を使用する必要があります。ほとんどの目的、特にビジネスでは、固定小数点演算がより適切です。

0

浮動小数点数の世界へようこそ。

2つの浮動小数点数が正確に等しい場合は、小さな奇跡です。これは、浮動小数点演算は数値精度がmachine epsilonという許容範囲内でしかないためです。

これは、分子構造科学や天文学を行う人々が同じ計算システムを使用できるようにするためです。

浮動小数点数を表示するときは、しばしばthe ROUND() functionを使用すると便利です。たとえば、

SELECT ROUND(0.0 + 1414.0 + -1414.0, 2) 

浮動小数点数がわからない場合は、それらについて学んでください。あなたがプログラミング業界で働く場合は、その分野の基礎を知ることが必要です。

はそれだけで成功したマイクロプロセッサ(私たちのほとんどは2017年に、今使用しているもの)の新しいペンティアムラインをロールアウトしていた1994年

インテルコーポレーションから古いジョークを思い起こさせます。最初のPentiumは、a defect in their floating point arithmetic, in which certain computations were inaccurate by more than machine epsilonでした。それにもかかわらず、非常にの製品発売に成功し、インテルの会長であるアンドリュー・グローブ氏に多くのお金をかけました。

したがって、Andy Groveはバーに入ります。彼はかなり気分がいいので、バーテンダーに「最高のスコッチウィスキーのショットをくれて」と言います。

バーテンダーは、27歳のスコッチの3本の指を彼に注ぎ、「それは20ドルになるだろう」と言う。

グローブはバーに20ドルの請求書を入れ、それを少し見て「変更を維持する」と言う。

関連する問題