2016-08-23 3 views
2

Почему именно ROUND(2.05, 1)2.0? Не предполагается производить 2.1?Заканчивается десятичное число, когда последняя значащая цифра составляет 5

Спасибо за помощь

EDIT

SELECT 
p.AdjustPercent, 
CAST(CAST(ROUND(p.AdjustPercent, 1) AS DECIMAL(10, 1)) AS VARCHAR(50)) + '%', 
.... 

У меня есть такие вещи, как

2.38  2.4% 
2.05  2.0% 
+0

мой выход '2.10' – TheGameiswar

+0

я получаю 2,10, а –

+0

Где вы читаете это? В приложении, консоли, SSMS? –

ответ

4

Я думаю, что я знаю, что ваша проблема. Является ли ваш тип плавающим? Имейте в виду, что 2.05 поплавок вполне может быть 2.049999998. Следовательно, оно округляется.

Попробуйте следующее:

DECLARE @f float = 2.05 
DECLARE @d decimal(10,2) = 2.05 
DECLARE @n numeric(10,4) = 2.05 

SELECT ROUND(2.05, 1) 
SELECT ROUND(@f, 1) 
SELECT ROUND(@d, 1) 
SELECT ROUND(@n, 1) 

Results 

2.10 
2 
2.10 
2.1000 
+6

В качестве предупреждения, пожалуйста, не беспокоить людей просто потому, что они не принимают ваш ответ. –

Смежные вопросы