Многие ответы здесь говорят об использовании
SELECT @value - FLOOR(@value)
чтобы получить десятичную часть числа. См. здесь или здесь а> для примера.
Я получаю то, что считаю странным поведением, когда делаю это.
DECLARE @test DECIMAL(38, 8)
SET @test = 123.05468800
SELECT @test - FLOOR(@test)
Result: 0
я могу сделать
SELECT 123.05468800 - FLOOR(123.05468800)
Result: 0.05468800
и я могу изменить тип @test
на FLOAT
, и это работает. Также FLOOR(@test)
возвращает 123
, как и ожидалось.
Я предполагаю, что это что-то с точностью десятичного типа, но единственная страница MSDN Я мог найти по этому вопросу очень мало.
Итак, что происходит? Почему я не получаю десятичную часть .05468800
? И что я должен делать или использовать, чтобы получить это?