SQL Server 2008 R2
Por que ao converter a FLOAT
em uma string ( Varchar
/ Nvarchar
) usando Cast
ou Convert
, ocorre um arredondamento ou truncamento?
UsandoCAST
DECLARE @floatVal FLOAT = 4.76758527755737
SELECT
CAST(@floatVal AS VARCHAR(20)) 'VARCHAR',
CAST(@floatVal AS NVARCHAR(20)) 'NVARCHAR'
Resultado
VARCHAR NVARCHAR
4.76759 4.76759
Usando CONVERT
:
DECLARE @floatVal FLOAT = 4.76758527755737
SELECT
CONVERT(VARCHAR(20), @floatVal) 'VARCHAR',
CONVERT(NVARCHAR(20), @floatVal) 'NVARCHAR'
Resultado
VARCHAR NVARCHAR
4.76759 4.76759
No STR
entanto, não há truncamento/arredondamento
DECLARE @floatVal FLOAT = 4.76758527755737
SELECT
LTRIM(STR(@floatVal, 17, 14)) 'STR'
Resultado
STR
4.76758527755737
desde já, obrigado
Da documentação sobre CAST e CONVERT :
CAST
está 'aparentemente' usando o estilo padrão de 0, pois você não pode especificar um estilo ao usarCAST
.CONVERT
padronizado para o estilo 0, pois você não especificou um estilo .Você pode obter mais precisão usando
CONVERT
e estilo (e você precisa aumentar o comprimento do tipo de dados de destino), mas os resultados parecem estar em notação científica (portanto, não exatamente comoSTR
).