2016-04-04 12 views
0

C#からTSQLに計算を移行しようとしていますが、必要な精度を達成するのが難しいです。数式の結果の精度をTSQLで上げる

(6.4 + (10 - 6.4) * 0.5) * 0.75

IはC#でこれを実行すると、私は結果6.1499999999999995を得る:プラグインいくつかの問題の変数を持つ式の例は、これです。 しかし、これをTSQLで選択すると、6.1500に丸められます。

TSQLでより高いレベルの精度を達成する方法はありますか?

+0

私はSQL Serverの答えが正しいと思います。 –

+0

私はそれを認めてうれしいです。問題は、私が実装している計算ではC#スタイルの結果が必要だということです。 – fyodorfranz

+0

C#のデータ型は? C#でfloat型を使用している場合、正確ではありません。常に小数点を使用します。ところで、あなたの声明には除算(/)がありませんので、なぜ6.149999999が正しいと思いますか? – FLICKER

答えて

0

あなたはX列とyが精密である

CAST(X AS DECIMAL(y,s)) 

を行うことができます。 38はあなたが使用できる最大のプレシジョンです。 sは小数点の右側の値の数です。

https://msdn.microsoft.com/en-us/library/ms187746(v=sql.120).aspx

+0

提案していただきありがとうございます。私はこれを使って私が探している結果を得る方法を知っていますか?私はすべての個々の変数を10進数にキャストしようとしましたが、うまくいきませんでした。 SELECT CAST((6.4 +(10 - 6.4)* 0.5)* 0.75)AS DECIMAL(38、37)) ' – fyodorfranz

+0

私はatmをテストすることができませんが、小数点の右側の値の数を定義する私の答え。あなたは、あなたが望むsの値で最初の値をキャストしようとすることができますか?私はこれが文全体を10進数にするべきだと思う。 – timcbaoth

+0

私は2番目の変数( 'DECIMAL(38,37)')を追加して数式全体をキャストしようとしました。 "最初の値をキャストできますか"というだけで6.4ですか? – fyodorfranz

関連する問題