質問

デバッグもファイナンスに関するSQLコードを見つけた不思議な問題の数値(24,8)数学ます。

走行は以下のクエリをご指定していますA+B-Cの発現結果を0.123457

を選択し、 B C A+B-C から ( 選択キャスト(0.12345678数値として(24,8))として、 キャスト(0数値として(24,8に使えるようにすると共に、B、 キャスト(500を数値として(24,8))C デジタルタイマプログラマ

しておりますので失われた2つの重要な記号です。ることができるようにこの固定方法が異なった転換の中間乗算結果はゼロ!) 数値(24,8いますよー。

ようにしています。もっ給排水は問題有る疑問を指定し動作するタイプの変換を実際に発生した私のサンプル?

役に立ちましたか?

解決

してのfloat型の正の演算の小数点以下の桁数を利用することができ不正確または誤りの原因)を超過した場合ます。見 データ型変換decimalやnumeric.

年額 NUMERIC(24,8)NUMERIC(24,8), は、SQL Serverのみチェックの種類なのでしょう存の16の非小数桁24-8)で保存すべての48桁の精度(maxは38)にまでさかのぼります。われている、32非小数桁を残すのみで6桁(38-32).

このように元のクエリー

SELECT A, B, C, A + B * C
FROM ( SELECT CAST(0.12345678 AS NUMERIC(24,8)) AS A,
  CAST(0 AS NUMERIC(24,8)) AS B,
  CAST(500 AS NUMERIC(24,8)) AS C ) T

に減少する

SELECT A, B, C, A + D
FROM ( SELECT CAST(0.12345678 AS NUMERIC(24,8)) AS A,
  CAST(0 AS NUMERIC(24,8)) AS B,
  CAST(500 AS NUMERIC(24,8)) AS C,
  CAST(0 AS NUMERIC(38,6)) AS D ) T

再度、 NUMERIC(24,8)NUMERIC(38,6), SQLサーバーへの保存の可能性は32桁の部で"年"、小数部で"、 A + D に減少する

SELECT CAST(0.12345678 AS NUMERIC(38,6))

まった 0.123457 四捨五入処理後.

他のヒント

以下の論が指摘するように eed3si9n 何と言ってましたお問いうのが数学の業務に抽出しの機能、また指定の精度が出せるため、表面処理オペレーションによ

この場合の機能とのように:

create function dbo.myMath(@a as numeric(24,8), @b as numeric(24,8), @c as numeric(24,8))
returns  numeric(24,8)
as
begin 
    declare @d as numeric(24,8)
    set @d = @b* @c
    return @a + @d
end

でもどうに 精度、規模、長(取引-SQL).であると考えているものを最小限の規模が大き'(の小数点以下の桁数)6結果の数値タイプのための増幅と同じにな部門等

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top