亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

T-SQL十進制分區準確度

T-SQL十進制分區準確度

斯蒂芬大帝 2019-09-03 15:55:26
有誰知道為什么,使用SQLServer 2005SELECT CONVERT(DECIMAL(30,15),146804871.212533)/CONVERT(DECIMAL (38,9),12499999.9999)給了我11.74438969709659,但是當我將分母上的小數位數增加到15時,我會得到一個不太準確的答案:SELECT CONVERT(DECIMAL(30,15),146804871.212533)/CONVERT(DECIMAL (38,15),12499999.9999)給我11.74438969
查看完整描述

3 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

對于乘法,我們只需將每個參數中的小數位數加在一起(使用鋼筆和紙張)來計算輸出dec位置。


但師只是把你的頭分開了。我現在要躺下了。


但在SQL術語中,它完全符合預期。


--Precision = p1 - s1 + s2 + max(6, s1 + p2 + 1)

--Scale = max(6, s1 + p2 + 1)


--Scale = 15 + 38 + 1 = 54

--Precision = 30 - 15 + 9 + 54 = 72

--Max P = 38, P & S are linked, so (72,54) -> (38,20)

--So, we have 38,20 output (but we don use 20 d.p. for this sum) = 11.74438969709659

SELECT CONVERT(DECIMAL(30,15),146804871.212533)/CONVERT(DECIMAL (38,9),12499999.9999)



--Scale = 15 + 38 + 1 = 54

--Precision = 30 - 15 + 15 + 54 = 84

--Max P = 38, P & S are linked, so (84,54) -> (38,8)

--So, we have 38,8 output = 11.74438969

SELECT CONVERT(DECIMAL(30,15),146804871.212533)/CONVERT(DECIMAL (38,15),12499999.9999)

如果您將每個數字對視為,則如果遵循此規則,您也可以執行相同的數學運算


146804871.212533000000000和12499999.999900000

146804871.212533000000000和12499999.999900000000000


查看完整回答
反對 回復 2019-09-03
?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

我們對魔術過渡感到困惑,

P&S是相互關聯的,因此:

  1. (72,54) - >(38,29)

  2. (84,54) - >(38,8)

假設(38,29)是一個錯字,應該是 (38,20),以下是數學:

  1. 一世。72 - 38 = 34,ii。54 - 34 = 20

  2. 一世。84 - 58 = 46,ii。54 - 46 = 8

這就是推理:

一世。輸出精度減去最大精度是我們要扔掉的數字。

II。那么輸出比例減去我們要扔掉的東西給我們...輸出比例中的剩余數字。

希望這有助于其他任何人試圖理解這一點。


查看完整回答
反對 回復 2019-09-03
  • 3 回答
  • 0 關注
  • 467 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號