我將示例更改爲使用FLOAT ......太多人都掛在整個NVARCHAR的東西上。我們不把數字作爲NVARCHAR存儲在數據庫中。我只是以NVARCHAR爲例。我用FLOAT得到了同樣的結果。SQL Server ROUND()不適用於以1結尾的FLOAT
我們遇到與SQL Server的ROUND)的一些FLOAT的
DECLARE @EXCHANGE_RATE FLOAT SET @EXCHANGE_RATE = 1.327810000000000000000 SELECT ROUND(@EXCHANGE_RATE,6,1) SET @EXCHANGE_RATE = 1.327820000000000000000 SELECT ROUND(@EXCHANGE_RATE,6,1)
首先一個問題(返回:1.327809 第二個返回:1.32782
你會第一個想到的會返回1.32781,而不是1.327809。
這是ROUND中的一個功能或錯誤嗎?任何簡單的方法呢?
謝謝!
基於鑄造他們爲十進制的墊的想法,這個工程......這是醜陋的,但工程。我使用10的原因是,我查看了我們的數據庫,這似乎是我們存儲的最長的數字。此外,我需要將其轉換回FLOAT,因爲他們不希望看到任何尾隨0的
DECLARE @EXCHANGE_RATE FLOAT SET @EXCHANGE_RATE = 1.327810000000000000000 SELECT CAST(ROUND(CAST(@EXCHANGE_RATE AS DECIMAL(28,10)),6,1) AS FLOAT)
那麼1.3278100截斷是1.327809?這對我來說似乎不太合適......這就像說100和90一樣。 – kschlege
我得到1.327809,和他們說的第一個例子 –
一樣,你覺得這樣做對嗎? – kschlege