kskumaran Ответов: 1

Как изменить номер?


i will try to after 4 decimal point?
DECLARE @tbl TABLE (val float)
INSERT INTO @tbl SELECT 12.19
INSERT INTO @tbl SELECT 13.92
INSERT INTO @tbl SELECT 14.47
INSERT INTO @tbl SELECT 18.025
INSERT INTO @tbl SELECT 18.3
INSERT INTO @tbl SELECT 17.79
INSERT INTO @tbl SELECT 18.13
INSERT INTO @tbl SELECT 15.245
INSERT INTO @tbl SELECT 12.485
INSERT INTO @tbl SELECT 11.365
INSERT INTO @tbl SELECT 18.26
INSERT INTO @tbl SELECT 15.44
INSERT INTO @tbl SELECT 19.13
INSERT INTO @tbl SELECT 15.59
INSERT INTO @tbl SELECT 28.695
INSERT INTO @tbl SELECT 29.35
INSERT INTO @tbl SELECT 15.27
INSERT INTO @tbl SELECT 15.895
INSERT INTO @tbl SELECT 26.51


SELECT *,((abs(val)*10000) - CONVERT(INT,(abs(val)*10000))),cast(val*power(10,4) as int),val*power(10,4)
from @tbl


Что я уже пробовал:

Но только одно число большая часть путаницы

Выберите (тормозов(ABS(литой(18.26 как поплавок))*10000) - преобразования(ИНТ(АБС(литой(18.26 как поплавок))*10000)))
		    
                    

OriginalGriff

Это не очень хороший вопрос - мы не можем понять из этого малого, что вы пытаетесь сделать.
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы. Поэтому мы понятия не имеем, какое число вы хотите изменить или на что вы пытаетесь его изменить ...
Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

jsc42

Я не совсем понимаю, чего вы добиваетесь. Вы пытаетесь усечь числа в местах 4 декабря или отобразить их с помощью мест 4 декабря? Пожалуйста, сообщите нам ожидаемый результат и фактический результат.

Я попробовал ваш код в SQLServer, и ваш 2-й col выдает нули для всех значений, кроме 18.26, что дает 2.91038304567337 E - 11, который почти равен нулю-это будет ошибка округления. Float всегда будет давать неточные значения, так как двоичное значение является только приближением десятичного значения, которое вы должны знать при работе со значениями float (на любом языке, а не только на SQL). Все значения будут иметь ошибки округления, но некоторые из них будут слишком малы для отображения, поэтому они будут показаны как 0.

1 Ответов

Рейтинг:
0

itsmypassion

Вы можете попробовать бросить

SELECT *,cast(((abs(val)*10000) - CONVERT(INT,(abs(val)*10000))) as Float), cast(val*power(10,4) as int),val*power(10,4)
from @tbl


kskumaran

Выбрать *,функция isnull(круглые((АБС(Валь)*10000) - преобразования(ИНТ(АБС(Валь)*10000)),0),0), литой(Валь*мощность(10,4) как int),вал*мощность(10,4)
от @tbl

kskumaran

выше этот ответ верен