Sql 2000 с плавающей запятой не отображает десятичную при выполнении деления - PullRequest
4 голосов
/ 08 апреля 2011

Я выполняю расчет в процентах, но он отображает целые числа.Я попытался преобразовать из int в float, но он все еще отображается как целое число.Как я могу исправить это, чтобы отобразить десятичное число.

Расчет, который я использую, составляет 100,0 * (1,0 + (floatA / (floatA + floatB)))

это где floatA = 1,floatB = 1, поэтому я должен видеть значение 50,0% вместо этого, я вижу значение 100.

Я пытаюсь заставить вещь использовать десятичные дроби.Любая помощь будет оценена.

Ответы [ 3 ]

5 голосов
/ 08 апреля 2011

Если floatA и floatB являются значениями, возвращаемыми COUNT, то они будут целыми числами.

Вам необходимо привести хотя бы один из операндов, участвующих в делении, к float / decimal, чтобы избежать целочисленного деления в этой части выражения.

100.0 * (1.0 + (floatA / (floatA + CAST(floatB as float)))) 
1 голос
/ 12 мая 2012

Простое приведение одного из ваших значений к типу с плавающей точкой решает проблему.

select (12345/6789)

приведенный выше пример вернет 1, то есть результат будет усечен до целого числа

select (cast(12345 as float)/ cast(6789 as float))
select (12354/ cast(6789 as float))

эти примеры вернут 1.81838267786125

1 голос
/ 08 апреля 2011

Если вы используете floatA = 1 и floatB = 1, то арифметика карандашом и бумагой должна дать вам 150. Но это целые числа, а не числа с плавающей точкой.

Но на большинстве платформ SQL этот оператор

select 1 / (1 + 1)

вернет ноль.

Усечения целочисленного деления .

Это

select 100.0 * (1.0 + (1.0/ (1.0 + 1.0)))

должно дать вам 150.

...