Почему, когда я:Разделить десятичное по десятичной и получить нулевой
select CAST(1 AS DECIMAL(38, 28))/CAST(1625625 AS DECIMAL(38, 28))
Могу ли я получить 0, но когда я
select CAST(1 AS DECIMAL(20, 10))/CAST(1625625 AS DECIMAL(20, 10))
я получаю значение?
Я бы ожидал, что деление более высокой точности вернет результат с более высокой точностью, почему это не так?
Я попробовал его с помощью оракула, и они оба вернули правильное значение. –
Обновлен вопрос - Это SQL-Server, мой плохой. Upvoted :) – Faraday
Ничего не поделаешь. десятичная (38, 28) полезна на территории с плавающей точкой, а номера FP не точны. Десятичные числа являются «управляемыми» числами с плавающей запятой и (20, 10) находятся примерно в пределах диапазона управления, в то время как (38, 24) определенно нет! Вот как работают номера FP ... Оформить первый ответ на http://stackoverflow.com/questions/21162624/indexing-float-values-in-python - первый ответ дает хороший обзор. –