Bhavika_Zimbar Ответов: 1

Как преобразовать значение float в значение varchar


I have value contains decimal (15,7) as datatype. It contains 5 digits after decimal point. My value is : 123.107157. When I try to convert the value into "varchar" then in the Output I get 123.107. I want result as 123.10705 after converting the value into varchar.


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

DECLARE @test1 decimal(15,7),
        @test2 nvarchar(10)

SELECT @test1 = 123.1071570

-- Случай 1 :

SELECT cast(@test1 as float) AS value1  
-- Ans : 123.107157  -- Value which I got after using cast()


SELECT convert(varchar,cast(@test1 as float)) AS value2		
-- Ans : 123.107 Value which I got after converting it to varchar


-- Случай 2 :
SELECT convert(DOUBLE PRECISION, @test1)  AS value1  
-- Ans : 123.107157  -- Value which I got after using DOUBLE


SELECT convert(varchar,convert(DOUBLE PRECISION, @test1)) AS value2		
-- Ans : 123.107 Value which I got after converting it to varchar

1 Ответов

Рейтинг:
2

OriginalGriff

Проблема в том, что 123.1071570 не должен отображаться как 123.10715 в пяти местах - он должен отображаться как 123.10716, потому что он округляется.
Это тривиально, чтобы сделать:

SELECT CONVERT(VARCHAR, CAST(@test1 AS DECIMAL(15,5))) AS LongDecimal


Bhavika_Zimbar

Причина, стоящая за usng cast или double, заключается в том, что я хочу удалить tialiing zero из своего значения. Я проверил данную статью : http://www.codeproject.com/Questions/708423/Remove-trailing-zeros-from-decimal-in-SQL

Если мое значение равно 123.10700000 : это дает мне 123.107, что правильно.
Но если это 123.1071570000, то я просто хочу удалить конечные нули , поэтому я буду использовать cast() или DOUBLE, из чего я получил желаемый результат, который равен 123.107157, но при преобразовании его в varchar я хочу то же самое значение без округления.

Bhavika_Zimbar

Я хочу удалить конечные нули из своего значения.
Мое значение может быть любым , но после использования Cast() of Double, когда я преобразую его в varchar, я хочу получить тот же результат, который я получил от cast или Double.